我有一堆服务,使用ansible构建和部署。 每个服务都由它自己的团队管理,具有独立的存储库,它们彼此完全独立。 我有一些ansible角色在所有服务(如安装的包,Web服务器等)中都是相同的。 有没有办法抽象这样的角色,例如在不同的存储库或某种类型的包中,并将它们作为另一个ansible角色的依赖包括在内?
示例:
service-foo/
play.yml – includes all roles
roles/
common – the same!
db-foo
web-foo
service-bar/
play.yml – includes all roles
roles/
common – the same!
db-bar
web-bar
我希望它看起来像这样:
role-storage?
common
service-foo/
play.yml - includes common as external dependency as well
roles/
db-foo
web-foo
service-bar/
play.yml - includes common as external dependency as well
roles/
db-bar
web-bar
答案 0 :(得分:3)
听起来你想要做的就是将共同角色设置为dependency。创建目录roles/service-foo/meta
和roles/service-bar/meta
,并在每个目录中添加一个列出依赖角色的main.yml:
---
dependencies:
- { role: common }
common
只是存储在您的角色目录中的另一个角色。如果你想获得幻想,那么可以直接从github等中提取相关角色。我链接到的Ansible文档提供了所有细节。