|
Ansible目录结构
配置文件目录 /etc/ansible/
执行文件目录 /usr/bin/
Lib库依赖目录 /usr/lib/pythonx/site-packages/ansible/
ansible配置文件ansible.cfg
配置文件路径 /etc/ansible/ansible.cfg
[ssh_connection] pipelining = True 管道加速功能,可提升文件传输效率
ansible inventory配置文件hosts
配置文件路径 /etc/ansible/hosts ansible默认读取该inventory
语法格式:
#定义单个server
192.168.20.100
controller.openstack.com
controller.openstack.com:222 #默认端口22
定义group
[openstack]
controller.openstack.com
compute[1:10].openstack.com
定义主机变量
controller.openstack.com http_port=8080
定义group变量
[openstack:vars]
ntp_server=ntp.openstack.com
ansible变量(非常重要)
变量通常从如下4个位置检索:
1. Inventory配置文件hosts
2. Playbook中定义的vars
3. Roles中的vars目录下的文件
4. Roles同级目录group_vars和hosts_vars目录下的文件
Ansible命令
注意:在执行ansible命令以前,需要将所有被管理主机配置好公私钥认证
注意:ansible命令支持正则
ansible
语法格式: ansible <host-pattern> [options]
示例1: ping模块来验证连通性
root@ubuntu:~# ansible openstack -m ping
192.168.20.180 | SUCCESS => {"changed": false,"ping": "pong"
}
192.168.20.182 | SUCCESS => {"changed": false,"ping": "pong"
}
root@ubuntu:
~#
示例2:copy模块文件复制
root@ubuntu:~# ansible openstack -m copy -a "src=/tmp/python-memcached-1.58.tar.gz dest=/tmp/python-memcached"
192.168.20.182 | SUCCESS => {
"changed": true,
"checksum": "66265a2b806fb5ecce1767b72239ac863912f355",
"dest": "/tmp/python-memcached",
"gid": 0,
"group": "root",
"md5sum": "23b258105013d14d899828d334e6b044",
"mode": "0644",
"owner": "root",
"size": 30562,
"src": "/root/.ansible/tmp/ansible-tmp-1491028332.23-112412748689813/source",
"state": "file",
"uid": 0
}
192.168.20.180 | SUCCESS => {
"changed": true,
"checksum": "66265a2b806fb5ecce1767b72239ac863912f355",
"dest": "/tmp/python-memcached",
"gid": 0,
"group": "root",
"md5sum": "23b258105013d14d899828d334e6b044",
"mode": "0644",
"owner": "root",
"size": 30562,
"src": "/root/.ansible/tmp/ansible-tmp-1491028332.22-93298111994658/source",
"state": "file",
"uid": 0
}
root@ubuntu:~#
ansible-playbook
语法格式:ansible-playbook playbook.yml
ansible-vault
语法格式:ansible-vault encrypt playbook.yml
ansible并发
ansible和ansible-playbook默认fork5个线程。
可以通过-f 选项来指定需要fork的线程数。
也可以在ansible.cfg配置文件中修改,这里我们修改为 forks 20个线程
[defaults]
# some basic
default values...
#inventory
= /etc/ansible/hosts
#library
= /usr/share/my_modules/
#remote_tmp
= $HOME/.ansible/tmp
forks
= 20
#poll_interval
= 15
#sudo_user
= root
#ask_sudo_pass
= True
#ask_pass
= True
#transport
= smart
#remote_port
= 22
#module_lang
= C |
|
|