注:本文基于CentOS 7.2系统搭建ansible进行说明
1、简介
ansible是新出现的自动化运维工具,基于Python开发。主要用于对批量系统的配置、程序进行管理,而这些管理主要通过批量命令的执行实现。ansible底层是基于ssh协议的,因此并不需要在客户端另外安装其他组件。
2、搭建
在CentOS 7系列上,直接使用以下命令安装,
yum install ansible -y
3、主机配置
ansible的配置文件为:
/etc/ansible/ansible.cfg
这个配置文件不需要修改即可运行,里面的配置几乎也都是注释状态。真正需要我们配置的就是hosts文件。
/etc/ansible/hosts
该文件定义了我们管理的主机,配置里可以自定义组,这样我们就能通过组的概念来对服务器进行管理和操作。
4、连通性配置
要远程管理服务器,必然是要通过身份验证才能操作。但是如果每次都要输入密码,那就不叫自动化了。既然是通过ssh协议通信,那我们就可以通过公钥的方式实现免密登录。
首先大概讲一下ssh免密登录配置,假如要通过A管理B、C、D三台服务器,那么就要将A服务器上的公钥都放到B、C、D上,这样在ssh登录鉴权的时候就直接通过公钥确认,无需输入密码。
具体配置如下:
- 在A服务器上生成公钥
ssh-keygen -b 2048 -t rsa
其中,-b指定密钥位数,目前rsa算法大于等于2048才认为是安全的,-t指定使用的算法。之后可以一路狂按enter。默认会在~/.ssh/下面(注意.ssh有个点)生成公私钥对,如下:
[root@localhost ~/.ssh]# ls
. .. id_rsa id_rsa.pub
接下来就要把公钥id_rsa.pub 拷贝到B、C、D服务器上。ssh提供了ssh-copy-id这个命令。
ssh-copy-id -i id_rsa.pub host
其中, -i指定要拷贝的公钥文件,host即为拷贝对象ip或域名。如果是针对其他用户,可以在ip前指定用户名,
ssh-copy-id -i id_rsa.pub user@host
这个命令执行的效果即为:在host机器的user用户的家目录下生成目录“.ssh”,并在该目录下生成authorized_keys文件。该文件内容即为id_rsa.pub的内容。
通过将公钥一一拷贝到B、C、D上后,就能通过服务器A免密登录这三台机器,ansible命令也就可以执行了。
5、ansible命令使用
ansible是基于模块工作的,本身没有批量部署的能力,其具体功能都是通过各个模块实现的,常用的模块有shell、raw、command、copy、fetch、script等等,具体使用可通过ansible-doc 命令查看使用帮助。
6、注意事项
因为ansible是比较新的工具,因此,对于一些旧的平台支持不太好,比如对于python的版本是有要求的,CentOS 7系列的ansible是2.4版本,这要求它管理的客户端的python版本不低于2.6,所以CentOS 5系列的原生python版本是不支持的,需要手动升级到对应高版本或者管理端使用ansible的低版本。ansible社区回复如下:
Ansible 2.4 dropped support for Python 2.4 and 2.5, so it is not expected to work on such nodes. You can either upgrade/install a supported Python version or use Ansible 2.3.