在角色之间共享任务时如何正确构建我的 ansible 剧本

How to properly structure my ansible playbook when sharing tasks between roles

我正在尝试遵循最佳实践来设计我的 ansible 剧本。所以 playbook 文件本身看起来像这样:

- hosts: ...
roles:
 - dbservers
 - webservers
 - ...

现在有一个任务 check_proxy_and_firewalls 我想在 dbsererswebservers 角色中执行。

我该如何正确构建它?我找到的所有 "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.

发件人:Ansible Playbook Roles

要包含一个文件,只需将其添加到您的剧本中:

  - include: path/to/task.yml

构建您的角色在很大程度上取决于您使用 Ansible 的目的。例如,我管理 Windows 和 Linux 服务器,因此我的角色结构如下:

roles
  windows
    <some_function>
       tasks
       vars
  linux
    <some_function>
       tasks
       vars

你的目标会有所不同,具体取决于你使用 ansible 的目标。