ansible是一款使用Python开发实现的开源软件,使用自动化引擎,可完成配置管理,应用部署,服务编排以及其他各种IT需求。 官方文档地址:http://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#installing-the-control-machine
安装
Centos下最简单的方法是用yum
yum install ansible
也可以使用RPM
$ git clone https://github.com/ansible/ansible.git
$ cd ./ansible
$ make rpm
$ sudo rpm -Uvh ./rpm-build/ansible-*.noarch.rpm
快速开始
Ansible从1.3版本之后都是通过openssh通信的,所以先配置ssh秘钥。
- 生成秘钥
ssh-keygen -t rsa -C "xxx@xx.com"
- 将公钥复制到对应服务器上
ssh-copy-id root@192.168.1.2
- 修改ansible的hosts配置文件
vim /etc/ansible/hosts
[test]
192.168.1.2
- 用ping模块测试连通性
[root@x~]# ansible test -m ping
192.168.1.2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
- 检查组中的成员
[root@]# ansible test --list-hosts
hosts (2):
172.31.101.25
172.31.101.14
ansible inventory 配置
ansible默认读取hosts文件的路径为:/etc/ansible/hosts
也可以用-i
参数手动指定位置,ansible test -i /etc/hosts --list-hosts
还可以在ansible.cfg
配置文件中通过inventory选项指定。
cat /etc/ansible/ansible.cfg
[defaults]
remote_port = 2222
remote_user = xxx
inventory = /home/xxxx/hosts
上面通过ansible.cfg配置了默认的连接端口和用户,hosts文件的路径。
- 定义组
[dns]
192.168.16.159
192.168.16.201
192.168.16.144:2016
192.168.16.161
- 定义组变量
[dns:vars]
ntp_server=ntp.magedu.com
- 定义组嵌套
[it]
192.168.16.69
192.168.16.145
192.168.16.20
192.168.16.69
[web:children]
it
dns
ansible与正则
ansible all -m ping / ansible "*" -m ping
ansible 192.168.16.* -m ping
ansible "web1:web2" -m ping
webservers:!phoenix 所有在webserver,但不在phoenix组的主机
webservers:&phoenix 即在webservers,又在phoenix组的主机
*.magedu.com / one*.com
域切割
dns[0] ==192.168.16.159
dns[-1] ==192.168.16.161
ansible "~(beta|web|green)\.example\.(com|org)" -m ping ~开始表示正则匹配