我们将庞大的 ansible 工作空间分解为可以独立运行的单个简单角色。它们都依赖于我们提供存储库等的 yum 角色,并且所有角色(A、B、C)都在它们的meta.yml
:
./roles_galaxy/A/meta/main.yml:
dependencies:
- name: yum-repo
src: foo
./roles_galaxy/B/meta/main.yml:
dependencies:
- name: yum-repo
src: foo
./roles_galaxy/C/meta/main.yml:
dependencies:
- name: yum-repo
src: foo
但是,这会导致 yum-repo 角色在我们的部署 playbook 运行时被多次执行,因此我们看到了该yum-repo
角色的多次执行。我们不希望它这样做,因为它只会占用额外的时间并重复运行:
剧本:
- name: Common Roles
hosts: things
roles:
- A
- B
- C
输出:
PLAY [Role A]
...
TASK [yum-repo ...]
PLAY [Role B]
...
TASK [yum-repo ...]
PLAY [Role C]
...
TASK [yum-repo ...]
我allow_duplicates = false
在我们的中尝试过ansible.cfg
,但我认为这不是正确的解决方案,因为它仍然执行多次。
如果需要更多信息,我很乐意尝试提供它的清理版本。目前正在运行 ansible-2.5.5。