在角色之间共享任务时如何正确构建我的 ansible 剧本
How to properly structure my ansible playbook when sharing tasks between roles
我正在尝试遵循最佳实践来设计我的 ansible 剧本。所以 playbook 文件本身看起来像这样:
- hosts: ...
roles:
- dbservers
- webservers
- ...
现在有一个任务 check_proxy_and_firewalls
我想在 dbserers
和 webservers
角色中执行。
我该如何正确构建它?我找到的所有 "best_practice" 指南似乎都没有考虑这种情况。
我可以简单地添加一个文件 common_tasks/check_proxy_and_firewalls.yml
并将其包含在我需要它的角色中。是怎么做到的?
如您所述,重用其他剧本任务的正确方法是使用包含。
Suppose you want to reuse lists of tasks between plays or playbooks. You can use include files to do this. Use of included task lists is a great way to define a role that system is going to fulfill.
要包含一个文件,只需将其添加到您的剧本中:
- include: path/to/task.yml
构建您的角色在很大程度上取决于您使用 Ansible 的目的。例如,我管理 Windows 和 Linux 服务器,因此我的角色结构如下:
roles
windows
<some_function>
tasks
vars
linux
<some_function>
tasks
vars
你的目标会有所不同,具体取决于你使用 ansible 的目标。
我正在尝试遵循最佳实践来设计我的 ansible 剧本。所以 playbook 文件本身看起来像这样:
- hosts: ...
roles:
- dbservers
- webservers
- ...
现在有一个任务 check_proxy_and_firewalls
我想在 dbserers
和 webservers
角色中执行。
我该如何正确构建它?我找到的所有 "best_practice" 指南似乎都没有考虑这种情况。
我可以简单地添加一个文件 common_tasks/check_proxy_and_firewalls.yml
并将其包含在我需要它的角色中。是怎么做到的?
如您所述,重用其他剧本任务的正确方法是使用包含。
Suppose you want to reuse lists of tasks between plays or playbooks. You can use include files to do this. Use of included task lists is a great way to define a role that system is going to fulfill.
要包含一个文件,只需将其添加到您的剧本中:
- include: path/to/task.yml
构建您的角色在很大程度上取决于您使用 Ansible 的目的。例如,我管理 Windows 和 Linux 服务器,因此我的角色结构如下:
roles
windows
<some_function>
tasks
vars
linux
<some_function>
tasks
vars
你的目标会有所不同,具体取决于你使用 ansible 的目标。