自动化运维工具--ansible
简介
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能,如果你有几十上百台服务器需要去维护,那么ansible就是首先。
环境准备
服务器名称 | 服务器IP | 角色 |
---|---|---|
node1 | 192.168.56.101 | ansible主控端 |
node2 | 192.168.56.102 | 被控端 |
node3 | 192.168.56.103 | 被控端 |
注意:实现批量运维海量服务器,ansible最大的优势是只需要在一台服务器中安装ansible包即可。被控端是不需要安装客户端程序的。极大简化了安装配置的步骤。
安装
在node1服务器上安装ansible
可直接在线yum安装:
$ yum install -y ansible
也可以到官方网站下载源代码,编译安装,官方均有编译安装的步骤。
配置
安装完成后,ansible安装家目录为:/etc/ansible/
下面就以实现批量操控node2,node3两台服务器为例来进行配置。
1、到/etc/ansible/hosts主机列表配置文件中增加我们要操控的两台服务器的ip地址
$ vi /etc/ansible/hosts
追加以下内容
[web]
node2 ansible_ssh_host=192.168.56.102 ansible_ssh_user=root
node3 ansible_ssh_host=192.168.56.103 ansible_ssh_user=root
2、接下来我们来试着进行ssh免密认证配置的操作,下面两个命令就比较重要了。
ssh-keygen:这个命令是用来生成本机的公钥和私钥的
ssh-keyscan:这条命令是用来把远程服务器的公钥来获取到本地的
在node1主控端服务器上生成公钥私钥,命令如下,执行后一路回车就可以生成了:
$ ssh-keygen -t rsa
生成的密钥文件目录在:/root/.ssh/下面
接着把node1上的公钥发送到node2,node3两台服务器中去,命令如下:
#将node2,node3被控端的公钥添加到node1主控端
$ ssh-keyscan 192.168.56.102 192.168.56.103 >> /root/.ssh/known_hosts
#批量将node1中的公钥发送到node2,node3被控端
$ ansible all -m authorized_key -a "user=root state=present key=\"{{ lookup('file', '/root/.ssh/id_rsa.pub') }} \"" -k
注意,执行上面这条命令时,如果提示错误信息:Aborting, target uses selinux but python bindings (libselinux-python) aren’t installed!
则表示node2,node3两台服务器已经开启了selinux。如果需要批量发送,则需要关闭selinux。
如果服务器不想关闭selinux,那只能自行将公钥添加到被控端服务器中去。
方法步骤如下:
#查看node1主控端生成好的公钥文件内容
$ cat /root/.ssh/id_rsa.pub
#复制该文件中的内容
#分别在node2,node3被控端服务器上面编辑以下文件
$ vi /root/.ssh/authorized_keys
#如果文件不存在,则自行创建。将node1主控端的生成的公钥内容,追加到此文件中。
当然上面的方法是纯手工来回复制,也可以使用下面的命令,直接拷贝过去
$ ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.56.102
$ ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.56.103
到这里配置就完成了。注意node1主控端生成的公钥和私钥两个文件不要删除。否就得重来一遍。
测试
#查看被控节点的服务器名称信息
$ ansible web -m shell -a 'uname -a'