Contents
  1. 1. pattern

pattern

ansible的命令格式为

1
ansible <pattern_goes_here> -m <module_name> -a <arguments>


1
ansible webservers -m service -a "name=httpd state=restarted"

Pattern支持常用的通配符和部分正则表达式,来指定符合某种模式的主机集。
all*表示所有主机
也可以指定单个或多个或模糊匹配主机

1
2
3
one.example.com
one.example.com:two.example.com
192.168.1.*

也可以指定多个group,即属于任意一个即可,用:分隔。

1
webservers:dbservers

也可以排除某些主机,如属于webserver但不属于pheonix

1
webservers:!phoenix

还可以指定交集

1
webservers:&staging

或者以上运算的组合

1
webservers:dbservers:&staging:!phoenix

以上表达式的含义大致为( webservers 并 dbserver ) 交 (staging) 交 (pheonix补) 。
你也可以使用通过-e参数传入的变量,不过这种用法不常见。

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

通配和组也可以混用

1
one*.com:dbservers

还可以用类似数组的方式来引用组中的特定成员

1
2
3
4
webservers[0]
webservers[-1]
webservers[0:1]
webservers[1:]

语法有点类似python

一般人不太可能用到正则表达式,但是是支持的,用~开头来标识这是一个regex

1
~(web|db).*\.example\.com

也可以在命令行中使用-l来指定子集:

1
ansible-playbook site.yml --limit datacenter2

或者通过文件指定

1
ansible-playbook site.yml --limit @retry_hosts.txt

Contents
  1. 1. pattern