如何在ansible中抽象角色
How to abstract roles in ansible
我有一堆服务,它们是用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
听起来您想做的是将公共角色设置为 dependency。创建目录 roles/service-foo/meta
和 roles/service-bar/meta
并在每个目录中添加一个 main.yml 列出从属角色:
---
dependencies:
- { role: common }
common
只是存储在您的角色目录中的另一个角色。如果你想变得有趣,那么可以直接从 github 等中提取依赖角色。我链接到的 Ansible 文档提供了所有细节。
我有一堆服务,它们是用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
听起来您想做的是将公共角色设置为 dependency。创建目录 roles/service-foo/meta
和 roles/service-bar/meta
并在每个目录中添加一个 main.yml 列出从属角色:
---
dependencies:
- { role: common }
common
只是存储在您的角色目录中的另一个角色。如果你想变得有趣,那么可以直接从 github 等中提取依赖角色。我链接到的 Ansible 文档提供了所有细节。