Skip to content

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”来明确指定某些主机或组