ansible 主机匹配Patterns

在 Ansible 中,Patterns 意味着要管理哪些机器,在 playbooks 中,意味着哪些主机需要应用特

定的配置或者过程

命令格式(下一章介绍 Ansible 的命令具体使用):

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

 

比如我们的主机列表配置为:

192.168.0.6

[webservers]

192.168.0.4

[db]

192.168.0.5

ansible webservers -m service -a "name=httpdstate=restarted"

模式通常用主机组来表示上面的命令就代表 webservers 组的所有主机

其他的匹配方式

表示通配 inventory 中的所有主机

all

*

也可以指定具有规则特征的主机或者主机名

one.example.com

one.example.com:two.example.com

192.168.1.50

192.168.1.*

 

下面的模式,用来知道一个地址或多个组。组名之间通过冒号隔开,表示OR的意思,意思是这

 

两个组中的所有主机

webservers

webservers:dbservers

 

非模式匹配:表示在 webservers 组不在 phoenix 组的主机

webservers:!phoenix

 

交集匹配:表示同时都在 webservers 和 staging 组的主机

webservers:&staging

 

组合匹配:在 webservers 或者 dbservers 组中,必须还存在于 staging 组中,但是不在phoenix 组中

webservers:dbservers:&staging:!phoenix

 

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

指定这个表达式

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

 

你完全不需要使用这些严格的模式去定义组来管理你的机器,主机名,IP,组都可以使用通配符去

匹配

*.example.com

*.com

one*.com:dbservers

 

可以匹配一个组的特定编号的主机(先后顺序 0 到...)

webservers1[0] 表示匹配 webservers1 组的第 1 个主机

webservers1[0:25] 表示匹配 webservers1 组的第 1 个到第 25 个主机(官网文档是:表示范

围,测试发现应该使用-,注意不要和匹配多个主机组混淆)

在开头的地方使用~,表示这是一个正则表达式

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

在 /usr/bin/ansible 和 /usr/bin/ansible-playbook 中 ,还可以通过一个参数”–limit来明确指定排除某

些主机或组

ansible-playbook site.yml --limit datacenter2

从 Ansible1.2 开始,如果想要排除一个文件中的主机可以使用@

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

 

分割线
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS