Ansible: Лучшая практика для соединения ролей (meta, rolename: или import_role) - PullRequest
0 голосов
/ 24 января 2019

Существует три способа (насколько мне известно) вызвать другую роль:

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?

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Роль "зависимости" является стандартным способом де-факто для этого.

См .: 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

Если вам нужен более низкий уровень объяснения, укажите ваши конкретные варианты использования.

0 голосов
/ 26 января 2019

Если у вас есть довольно простой проект, в котором вы хотите в основном выполнять одинаковые роли в одинаковом порядке на всех узлах, продолжайте и просто вызывайте их по порядку в книге игр.

Если у вас есть немного более сложные зависимости, и вы просто хотите управлять ролями, зависящими друг от друга, метод мета-зависимостей в порядке, и, насколько я знаю, стабильный.

Если вам не нужны дополнительные функции из import_role, такие как многократное выполнение роли с различными параметрами из другого списка задач, предпочтение следует отдавать метаданным, поскольку import_role имеет время написания в предпросмотре .

...