Ansible是一种非常优秀的自动化运维工具,基于SSH协议开发的,并且更适合模块化工作,Ansible是一种集成IT系统的配置管理、应用部署、执行特定任务的开源平台,它是基于python,Agentless语言,由Paramiko和PyYAML两个关键模块构建。Ansible只需要在一台普通的服务器上运行即可,不需要在客户端服务器上安装客户端。因为Ansible是基于SSH远程管理,而Linux服务器大都离不开SSH,所以Ansible不需要为配置工作添加额外的支持。Ansible安装使用非常简单,而且基于上千个插件和模块实现各种软件、平台、版本的管理,支持虚拟容器多层级的部署。很多读者在使用Ansible工具时,认为Ansible比Saltstatck执行效率慢,其实不是软件本身慢,是由于SSH服务慢,可以优化SSH连接速度及使用Ansible加速模块,满足企业上万台服务器的维护和管理。

1.Ansible运维工具原理

    Ansible是一款极为灵活的开源工具套件,能够大大简化Unix管理员的自动化配置管理与流程控制方式。它利用推送方式对客户系统加以配置,这样所有工作都可在主服务器端完成。其命令行机制同样非常强大,允许大家利用商业许可Web UI实现授权管理与配置。可以通过命令行或者GUI来使用Ansible,运行Ansible的服务器这里俗称“管理节点”;通过Ansible进行管理的服务器俗称“受控节点”。权威媒体报道Ansible于2015年被Red Hat公司1.5亿美元收购,新版Red Hat内置Ansible软件。基于Ansible构建企业自动化运维平台,实现大规模服务器的快速管理和部署。Ansible将平常复杂的配置工作变得简单,变得更加标准化更容易控制。

Ansible自动运维管理工具优点:

  1. 轻量级,更新时,只需要在操作机上进行一次更新即可;
  2. 采用SSH协议;
  3. 不需要去客户端安装agent;
  4. 批量任务执行可以写成脚本,而且不用分发到远程就可以执行;        
  5. 使用python编写的,维护更简单;     
  6. 支持sudo普通用户命令;
  7. 去中心化管理。

Ansible自动运维管理工具工作原理拓扑,如下图所示:

ansible服务端主从配置 ansible启动服务_服务器

2.Ansible管理工具安装配置

Ansible 可以工作在Linux、BSD、Mac OS X 等平台,对Python环境的版本最低要求为Python2.6以上,如果操作系统Python软件版本为2.4,需要升级方可使用Ansible工具。

Red Hat、CentOS操作系统可以直接基于YUM工具自动安装Ansible,CentOS6.x或者CentOS7.x安装前,需先安装epel扩展源,代码如下:

rpm -Uvh   http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum   install   epel-release  -y
yum   install   ansible       -y

Ansible工具默认主目录为:/etc/ansible/,其中hosts文件为被管理机IP或者主机名列表,ansible.cfg为ansible主配置文件,roles为角色或者插件路径,默认该目录为空,如图所示:

ansible服务端主从配置 ansible启动服务_管理工具_02

3.Ansible工具参数详解

基于Ansible批量管理之前,需将被管理的服务器IP列表添加至/etc/ansible/hosts文件中,如图添加4台被管理端IP地址,分成web和db两组,本机也可以是被管理机。

ansible服务端主从配置 ansible启动服务_管理工具_03

基于Ansible自动运维工具管理客户端案例操作,由于Ansible管理远程服务器基于SSH,在登录远程服务器执行命令时需要远程服务器的用户名和密码,也可以加入-k参数手动输入密码或者基于ssh-keygen生成免秘钥。

Ansible自动化批量管理工具主要参数如下:

-v,–verbose                                               打印详细模式;
-i PATH,–inventory=PATH                   指定host文件路径;
-f NUM,–forks=NUM                          指定fork开启同步进程的个数,默认5;
-m NAME,–module-name=NAME            指定module名称,默认模块command;
-a MODULE_ARGS                      module模块的参数或者命令;
-k,–ask-pass                            输入远程被管理端密码;
–sudo                                        基于sudo用户执行;
-K,–ask-sudo-pass                             提示输入sudo密码与sudo一起使用;
-u USERNAME,–user=USERNAME      指定移动端的执行用户;
-C,–check                                     测试执行过程,不改变真实内容,相当于预演;
-T TIMEOUT,                                                 执行命令超时时间,默认为10秒;
--version                                               查看Ansible软件版本信息。