Ansible 小手册系列 六(Patterns 匹配模式)

Patterns 是定义Ansible要管理的主机。但是在playbook中它指的是对应主机应用特定的配置或IT流程。

命令格式

命令行

ansible <host-pattern> [options]

playbook 中

- hosts: <host-pattern>

  

使用示例

ansible \* -m service -a "name=httpd state=restarted"

  

Patterns 使用

匹配所有的主机

all
* # 命令行中使用 \进行转义
以上两个Patterns 均表示匹配所有的主机

精确匹配  

192.168.77.121
以上Patterns 表示只匹配192.168.77.121这一个主机

或匹配 

web:db
以上Patterns 表示匹配的主机在web组或db组中

非模式匹配

"web:\!db"
命令下需转义特殊符号,以上Patterns 表示匹配的主机在web组,不在db组中,包含在web组,又在db中的用户

交集匹配

"web:&db"
以上Patterns 表示匹配的主机同时在db组和dbservers组中

通配符匹配

web-*.com:dbserver
webserver[0]
webserver[0:25]
*表示所有字符,[0]表示组第一个成员,[0:25] 表示组第1个到第24个成员,类似python中得切片

正则表达式匹配

~(web|db).*\.example\.com
在开头的地方使用“~”,表示这是一个正则表达式

组合匹配

"webservers:dbservers:&staging:!phoenix"
在webservers 或者dbservers 组中,必须还存在于staging 组中,但是不在phoenix 组中

在ansible-palybook 命令中,你也可以使用变量来组成这样的表达式,但是你必须使用“-e”的选项来指定这个表达式

webservers:!{{excluded}}:&{{required}}

排除条件

只执行-l后的主机
ansible-playbook site.yml -l 192.168.77.129
ansible-playbook site.yml --l @retry_hosts.txt
上一篇:NOIp 2014 #1 生活大爆炸版石头剪刀布 Label:模拟


下一篇:[NOIP2014] 提高组 洛谷P1328 生活大爆炸版石头剪刀布