01 ansible的基本介绍

一、现有的企业服务器环境

  在如今的企业中,特别是互联网公司,他们的业务量众多;好比负载均衡服务器、web服务器、动态解析(php)服务器、数据库(mysql)服务器以及网站缓存服务器,等等;php

  例如:一个hadoop集群就有上前台的服务器;这样的话,如何批量管理这些服务器是一个很大的问题;python

  第二个问题,为了提升管理效率,必须把服务器的基础环境设施配置好,就好像高速公路同样,若是不平,则汽车的速度也没法提起来;mysql

  因此,咱们首先须要一个批量化管理系统程序,其次,系统的硬件设备不能相差太大;web

二、运维工做基本介绍

  想要作批量化管理,咱们首先就要知道,那些事情须要进行批量操做;基本上,不少的运维工做都是须要进行,或者说都是能够进行批量化操做的;算法

  整体来讲,运维人员包括的基本工做有:sql

    一、系统安装(包括物理机和虚拟机) 数据库

  物理机经过PEX 或则要求厂家安装
  虚拟机 则是经过glance 镜像模板这种技术来实现(克隆)

    二、程序包的安装bootstrap

      对程序进行配置,知足使用者的需求,而后须要启动服务,保证服务正常运行;   api

    三、程序发布缓存

      这里的程序通常指的是开发人员开发的程序代码,运维人员须要将其在生产环境下面进行部署与配置;如今程序更新、且如今都是以敏捷模式开发,每周都须要更新一次,并部署到生产环境下;

      一样的web页面、游戏的代码也是如此,且游戏代码更新较为频繁,且更多的是在晚上进行代码部署,这个时候的流量会比较小,相对的影响也会比较小一点;

    四、监控

      这里的监控操做就较为复杂,除了系统的正常运行之外;咱们还须要去监控服务的正常运行;服务器CPU、内存的使用状况;网络设备的运行状况;带宽流量的占用状况等等;

      同时,若是监控中出现了错误,咱们须要对应的作出一些对应的操做!

 

  基于以上四点,咱们大体将运维工做氛围三个层面:

  在系统操做层面上(OS Provisioning),咱们须要安装好操做系统;对于物理机器,咱们可使用PXE、Cobbler、kickstack来实现服务器的批量部署;而对于虚拟机实例,咱们则使用各类云管理工具(云stack)来实现批量安装,经过定制glance,或者说是image templates经过镜像文件来启动虚拟机;

  服务操做层面上(configration),咱们使用puppet工具(ruby开发的一款自动化运维工具)、saltstack(python开发一款自动换运维工具)、chef、cfengine等软件程序来实现服务安装、服务配置与服务启动;

  批量操做层面(command and control),fabric(python研发的一个命令行工具)。在规模稍大的公司里面,都会本身研发批量管理工具,其中蓝鲸就是腾讯本身的自动化运维工具; 

三、ansible的基本介绍

3.一、ansible的历史

  Ansible的第一个版本是0.0.1,发布于2012年3月9日,其做者兼创始人是Michael DeHaan。Michael DeHaan曾经供职于Puppet Labs、RedHat、Michael,在配置管理和架构设计方面有丰富的经验。

  其在RedHat任职期间主要开发了Cobble,经历了各类系统简化、自动化基础架构操做的失败和痛苦,在尝试了Puppet、Chef、Cfengine、Capistrano、Fabric、Function、Plain SSH等各式工具后,决定本身打造一款能结合众多工具优势的自动化工具,Ansible由此诞生。

3.二、ansible的特色

  一、平缓的入门曲线,ansible简单易学;

  二、无须要bootstrapping(这是一种重复抽样的算法)功能;

  三、ansible使用模式是一种非有效的无环图的形式;

  四、无代理端(no agents);

  五、没有服务端,不是C/S架构的,直接装上ansible服务,就能够对服务器进行控制;

  六、不依赖额外的PKI机制;

  七、ansible是一种模块化的结构,须要什么功能,插入或者调用什么模块便可;

  八、使用YAML模板语言文件;YAML能够用来编写playbook,经过playbook来实现各类功能,若是功能较为负载,须要多个playbook来协调完成,则须要使用roles来指定各个playbook之间的关系;

  九、默认使用ssh来进行服务器之间的互通;

  十、强大的任务编排工具,相似于kubernetes;

3.三、ansible的工做原理

  ansible包含了众多自动化工具的优势;

 

  其中,在系统层面上有红帽的卫星服务,须要购买(不多有人使用),还有cobbler、func实现系统的统一安装与管理;

  其次,在配置层面上面具备cfengin和puppet,以及chef的配置功能;

 

  ansible又凭什么来接受自动化平台管理呢?其实,在系统管理上有两种方式,以一种是有agent端的,一种是没有agent端的;

  有agent端的:例如puppet、func都是须要安装agent进行管理,这种管理方式相对而言比较麻烦,可是比较稳定;

  无agent端的(agentless):例如ansible、fabirc,无agent端的管理程序能够经过ssh来进行程序管理,这时候就存在一个问题,咱们须要拥有root权限,若是没有root权限就须要经过sudo来提权,从而才能达到对其余服务器进行管理的目的;

  

  相对而言,有agent端的程序更加安全,这一点agentless是不具有的;因此,ansible的管理工具对安全提出了必定的挑战,客户端须要有服务器端的秘钥,这样若是服务器端被人攻破,则全部的服务器都会很危险;

  因此,ansible使用ssh密码登陆的方式来进行管理,这样若是被管理端没有获取公钥,则就没法被加入到被管理的服务器群中来,也不会被攻破了;

3.四、ansible的架构

  ansible属于一种模块化架构;全部的模块都与ansible主模块相连,以下图:

 

   除了主核心模块--ansible外,还包括一些其余的模块,例如:core modules(核心模块)、costome modules(自定义模块)、plugins(第三方插件)、connection plugins(连接插件)、host inventory(主机清单)、playbooks(剧本);

  其中core modules和costome modules指定了一系列的操做动做;

  playbooks则是经过YAML语言将模块调用起来,进行编排,按照必定的顺序来执行相应的操做;

  而host inventory则指定了清单列表,指示了什么机器要被进行playbook的操做;

  connection plugins则用来关联被管理的主机;

四、ansible的安装与基本用法

  yum install ansible -y

  ansible的主配置文件

    /etc/ansible/ansible.cfg

    /etc/ansible/hosts

  ssh的无秘钥认证

  ansible-doc的基本用法

相关文章
相关标签/搜索