【发布时间】:2016-10-15 09:56:36
【问题描述】:
假设我的结构中有 2 组具有相似需求的主机,但它们并不共享所有安装的相同软件包,例如。像这样:
发电机(主机组)需求:
- rpm A
- rpm B
- rpm C
执行者(另一个主机组)需要:
- rpm A
- rpm B
我应该如何组织我的 Ansible 角色?一种方法是:
generators-role
- main.yml
- package install
- rpm A
- rpm B
- rpm C
executors-role
- main.yml
- package install
- rpm A
- rpm B
问题在于,如果我需要更改有关 packa 安装的某些内容,我必须在 2 个地方进行更改。我可以选择类似的东西:
packages1-role
- main.yml
- package install
- rpm A
- rpm B
packages2-role
- main.yml
- package install
- rpm C
然后:
generators-playbook
- roles:
- packages1-role
- packages2-role
executors-playbook
- roles:
- packages2-role
但在这种情况下,我确实需要有充分的理由将 RPM 分组,而不是“它们属于同一组主机”。而且我仍然会遇到与第一个示例相同的问题。
我也考虑过使用基于传递给角色的变量的标签或条件,但这似乎有点 hacky,或者至少这是我从 Ansible 文档中理解的。
那么,有什么提示最好的方法是什么?
谢谢!
【问题讨论】:
-
请参考 ansible 最佳实践 (docs.ansible.com/ansible/playbooks_best_practices.html)