linux – 基于其他角色的Ansible条件语句?

linux – 基于其他角色的Ansible条件语句?,第1张

概述我有一个Ansible部署的以下场景: > hostX具有common-mta和其他一些角色 > hostY具有common-mta角色以及角色package-postfix common-mta角色复制一个文件(如果你猜对了,它是/etc/postfix/main.cf),但是我想根据主机是否具有package-postfix的角色来限制它,而不仅仅是限制我现在拥有的主机名,例如: when: 我有一个Ansible部署的以下场景:

> hostX具有common-mta和其他一些角色
> hostY具有common-mta角色以及角色package-postfix

common-mta角色复制一个文件(如果你猜对了,它是/etc/postfix/main.cf),但是我想根据主机是否具有package-postfix的角色来限制它,而不仅仅是限制我现在拥有的主机名,例如:

when: not group_names == "mail"

我想要的是:

when: not role_names == "package-postfix"

我认为这会更清晰,并允许我随意添加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"

我想用以下代替:

- name: install postfix generic config if we don't have the postfix role  template: src=main.cf.j2 dest=/etc/postfix/main.cf  when: "'package-postfix' not in role_names"

但是,role_names不是有效变量,到目前为止,在文档中我找不到包含主机所在角色列表的变量,而不是其组.这些可能看起来是一样的,但在我的情况下它们不是,因为我提到的三个组都共享包后缀角色.希望这是有道理的,我正确使用Ansible.

@R_403_6120@ 实际上我们在Ansible since late 2013中有role_names变量.用Ansible 1.9.2确认.所以你可以简单地写一个像这样的条件
when: "'package-postfix' not in role_names"
总结

以上是内存溢出为你收集整理的linux – 基于其他角色的Ansible条件语句?全部内容,希望文章能够帮你解决linux – 基于其他角色的Ansible条件语句?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1040775.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存