如何在ansible中抽象角色

如何在ansible中抽象角色,ansible,infrastructure,Ansible,Infrastructure,我有一系列服务,它们是用ansible构建和部署的。 每个服务都由它自己的团队管理,有单独的存储库,它们彼此完全独立。 我有一些在所有服务中都相同的ansible角色(如已安装的软件包、web服务器等)。 是否有任何方法可以抽象这些角色,例如在不同的存储库或某种包中,并将它们作为依赖项包含在另一个ansible角色中 例如: service-foo/ play.yml – includes all roles roles/ common – the same! db-fo

我有一系列服务,它们是用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

听起来你想做的是将普通角色设置为一个角色。创建目录
roles/service foo/meta
roles/service bar/meta
,并在每个目录中添加一个main.yml,列出从属角色:

common
只是存储在角色目录中的另一个角色。如果你想获得更多的灵感,那么依赖角色可以直接从github中提取,等等。我链接到的Ansible文档提供了所有细节

---
dependencies:
    - { role: common }