我在 Ansible 部署中有以下场景:
common-mta
和其他一些角色common-mta
也有角色package-postfix
该common-mta
角色拷贝一个文件(如果你能猜到,它的/etc/postfix/main.cf
),但我想基于主机是否有限制这个角色的package-postfix
,而不是仅仅通过主机限制像我现在有,例如:
when: not group_names == "mail"
Run Code Online (Sandbox Code Playgroud)
我想要的是这样的:
when: not role_names == "package-postfix"
Run Code Online (Sandbox Code Playgroud)
我认为这会更清晰,并且允许我随意将package-postfix
角色添加到其他主机,而无需修改common-mta
角色。
这可能吗?
编辑:Navern 的建议不适用于此特定用例;角色列表独立于组列表,虽然我可以通过组执行此操作,但它更脏。考虑一下,这是我的实际任务线:
- name: install postfix generic config if we aren't an mx, mail, or luna host
template: src=main.cf.j2 dest=/etc/postfix/main.cf
when: "'luna' not in group_names and 'mx' not in group_names and 'mail' not in group_names"
Run Code Online (Sandbox Code Playgroud)
我想将其替换为:
- name: install postfix generic config …
Run Code Online (Sandbox Code Playgroud)