Как использовать другую точку входа в ролях ansible

Основываясь на доступной документации для роли, я могу создать несколько точек входа для ролей, создав файлы:

playbooks/roles/my_role/tasks/main.yml
playbooks/roles/my_role/tasks/other.yml

И я могу добавить роль по умолчанию main.yml, используя этот код:

---
- name: Example 1
  hosts: <hostnames>
  roles:
    - my_role

Но как я могу использовать точку входа other.yml?
Я ожидал, что это будет что-то вроде этого, но ни один из них не работает:

---
- name: Example 1
  hosts: <hostnames>
  roles:
    - my_role:other
    - my_role/other
    - my_role.other
Введение в Ansible Roles
Введение в Ansible Roles
Ansible - это отличный инструмент управления конфигурацией, который можно использовать для автоматизации настройки или развертывания на большом...
1
0
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Директива roles в playbook загружает «точку входа» роли по умолчанию, то есть tasks/main.yml. Другие файлы задач, такие как tasks/others.yml, могут быть загружены из него на основе условий, тегов и т. д.

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

Например.:

  # invoke role's default "entrypoint" (main.yml)
  roles:
    - my_role

  tasks:
    # include the role, but tasks from other.yml
    - include_role:
        name: my_role
        tasks_from: other.yml

Обратите внимание на порядок выполнения, указанный в документации, на которую вы ссылаетесь.

Другой «хакерский» вариант — использовать модули include|import_tasks, которые работают так же, как включение простого файла «задачи» (теряя функциональность ролей), если это соответствует вашим требованиям.

  tasks:
    - include_tasks: path/to/my_role/tasks/other.yml

Другие вопросы по теме