5. Patterns 匹配
Patterns 意味着要管理哪些机器
ansible不能操作没有在Inventory中定义过的主机
常用的匹配
主机列表
/etc/ansible/hosts
[nova]
10.2.6.103 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
10.2.6.104 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
10.2.6.109 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
10.2.6.110 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
[compute]
10.2.6.103 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
10.2.6.104 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
10.2.6.105 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
10.2.6.106 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
[ironic]
10.2.6.104 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
10.2.6.107 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
10.2.6.108 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
[db]
10.2.6.109 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
10.2.6.110 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
全量匹配
all 或 *
ansible all -m ping
ansible "*" -m ping
逻辑匹配
与&:
//nova和compute组中同时存在的机器。(单双引号都可以)
ansible 'nova:&compute' -m ping
或:
//对多个主机或者多个组进行执行,组名之间通过冒号隔开,表示“OR”的意思,意思是这两个组中的所有主机
ansible nova:ironic -m ping
非!:
//所有在nova里面的机器,但不在compute里面的机器被匹配到。需要使用单引号。
ansible 'nova:!compute' -m ping
组合匹配
ansible 'nova:ironic:&db:!compute' -m ping
模糊匹配
ansible 192.168.* -m ping
切割或索引
ansible db[0] -m ping
ansible db[0:1] -m ping
正则匹配
//以~开始表示正则匹配
~(nova|ironic).*\.example\.com (需要单或双引号)
//检测以192.168开头的主机
ansible ~192\.168\.[0-9]\.[0-9]\{\2} -m ping
指定主机
ansible-playbook 中,还可以通过一个参数”--limit”来明确指定某些主机或组