1.在master服务器上安装ansible
yum install epel-release -y
yum install ansible -y
2.添加slave到管理的主机组,将slave的ip添加到hosts下,先简单添加,主机分组后面再谈。
vi /etc/ansible/hosts
3.完成后,可以测试下
ansible all -m ping
4.成功返回如下,如果有警告,可在vi /etc/ansible/ansible.cfg将警告改为false。
192.168.139.110 | SUCCESS => {
"changed": false,
"ping": "pong"
}
5.测试成功,说明已经可控制slave,下面介绍几个常用的模块。ansible的选项参数我就不过多介绍了,可自行度娘
6.模块command/shell/raw。。。。。发现返回都是一样。它们的区别就在于command模块不是调用的shell的指令,所以没有bash的环境变量,也不能使用shell的一些操作方式,其他和shell没有区别。
而shell模块调用的是/bin/sh指令执行,raw很多地方和shell类似,更多的地方建议使用shell和command模块。但是如果是使用老版本Python,需要用到raw,又或者是客户端是路由器,因为没有安装python模块,那就需要使用raw模块了。
注意:command模块不能使用 ‘’ | ‘’符,而shell和raw可用
ansible 192.168.139.110 -m command -a 'ls -l /tmp'
ansible 192.168.139.110 -m shell -a 'ls -l /tmp'
ansible 192.168.139.110 -m raw -a 'ls -l /tmp'
7.copy模块 ,src参数指的是本地对象文件或文件夹,dest参数是远程主机存放的位置,mode参数为复制对象设置权限,backup参数文件存在的时候可以选择覆盖之前,将源文件备份.
[roo@master~]#ansible 192.168.139.110 -m copy -a 'src=/tmp/a.playbook dest=/tmp/a.playbook mode=664 backup=yes'
192.168.139.110 | SUCCESS => {
"changed": true,
"checksum": "51e3349a716098db6c1b017be22cacbfb2d735bb",
"dest": "/tmp/a.playbook",
"gid": 0,
"group": "root",
"md5sum": "08817797fef316008f89397ce9ed79a1",
"mode": "0664",
"owner": "root",
"size": 167,
"src": "/root/.ansible/tmp/ansible-tmp-1521703323.39-7112136437252/source",
"state": "file",
"uid": 0
}