Ansible:连接角色的最佳实践(元,角色名:或import_role)

Ansible: Best practice to connect roles (meta, rolename: or import_role)

据我所知,可以通过三种方式调用另一个角色:

1) 在 role: rolename

的剧本中

2) 在 rolename/meta/main.yml 文件中的角色本身

dependencies:
  - { role: rolename2 }

3)

- import_role:
    name: anotherrolename

我想我也知道区别: 2号(元方法)将rolname2在任务中指定的事情之前执行。 第 3 = https://docs.ansible.com/ansible/2.4/import_role_module.html

我的问题首先不是这些方法之间的区别(请随时告诉我们),而是我想知道连接两个(或更多)角色的最佳做法是什么。方法 1、2 或 3?

如果您有一个相当简单的项目,其中您希望大部分 运行 在所有节点上以相同的顺序执行相同的角色,请继续并在剧本中按顺序调用它们。

如果你的依赖比较复杂,只是想管理相互依赖的角色,meta dependencies的方法是可以的,而且据我所知稳定。

除非您需要来自import_role的额外功能,例如运行使用另一个任务列表中的不同参数多次指定一个角色,否则元数据依赖是首选,因为 import_role 在写作时是 in preview.

角色 "dependencies" 处理这个问题的事实上的标准方法。

参见:https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#role-dependencies

---
dependencies:
- role: wheel
  vars:
     n: 1
- role: wheel
  vars:
     n: 2
- role: wheel
  vars:
     n: 3
- role: wheel
  vars:
     n: 4

如果您需要较低级别的解释,请提供您的特定用例。