Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。它用Python写成,类似于Chef和Puppet,但是有一个不同和优点是我们不需要在节点中安装任何客户端。它使用SSH来和节点进行通信。
本篇中我们将在CentOS7上安装并配置Ansible,并且尝试管理两个节点。
Ansible 服务端� ansible.linuxtechi.com ( 192.168.1.15 )
节点� 192.168.1.9,192.168.1.10
第一步: 设置EPEL仓库
Ansible仓库默认不在yum仓库中,因此我们需要使用下面的命令启用epel仓库。
[root@ansible~]#rpm-iUvh http://dl.Fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
[root@ansible~]#yuminstall ansible
安装完成后,检查ansible版本:
[root@ansible~]#ansible--version
[root@localhost ~]# ansible --version
ansible 2.1.0.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
第三步: 设置用于节点鉴权的SSH密钥
(或者用这个办法
设置无密码ssh访问远程主机:
ssh
-keygen-trsa
|
在Ansible服务端生成密钥,并且复制公钥到节点中。
root@ansible~]#ssh-keygen
403.jpg">
ssh-keygen
使用ssh-copy-id命令来复制Ansible公钥到节点中。
404.jpg">
ssh-copy-id-command
第四步:为Ansible定义节点的清单
文件/etc/ansible/hosts
维护着Ansible中服务器的清单。
[root@ansible~]#vi/etc/ansible/hosts
[test-servers]
192.168.1.9
192.168.1.10
主机文件示例如下:
ansible-host
第五步:尝试在Ansible服务端运行命令
使用ping检查‘test-servers’或者ansible节点的连通性。
[root@ansible~]#ansible-mping'test-servers'
ansible-ping
执行shell命令
例子1:检查Ansible节点的运行时间(uptime)
[root@ansible~]#ansible-m command-a"uptime"'test-servers'
ansible-uptime
例子2:检查节点的内核版本
[root@ansible~]#ansible-m command-a"uname -r"'test-servers'
kernel-version-ansible
[root@ansible~]#ansible-m command-a"useradd mark"'test-servers'
[root@ansible~]#ansible-m command-a"grep mark /etc/passwd"'test-servers'
useradd-ansible
[root@ansible~]#ansible-m command-a"df -Th"'test-servers'>/tmp/command-output.txt
redirecting-output-ansible
使用Ansible批量管理远程服务器 http://www.linuxidc.com/Linux/2015-05/118080.htm
定义一个简单的playbook
保存为client.yaml结尾的文件
1 |
- hosts: client |
执行playbook
1 |
[root@master ~]# ansible-playbook client.yaml |