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

ansibleinventory配置

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         ~开始表示正则匹配