Anisble 有一些高级用法,包括了一些保留的变量,比如:hostvars, group_names, groups 等。这些对于编写判断语句较有用处:
比如:group_names
的使用。
如果我们想为 [masters]
组设置 master
的 role
属性,为 slave
组设置 slave
的 role
属性。
一般的做法是:
[masters]
xxx.xxx.master.domain
[masters:vars]
role=master
[slaves]
xxx.xxx.slave.domain
[slaves:vars]
role=slave
现在有了 group_names 则不需要这样,直接定义一个 .j2
的文件,然后在里面定义即可。
比如:
role={% if "masters" in group_names %},master{% endif %}{% if "slaves" in group_names %},slave{% endif%}