include_role#
Модуль ansible.builtin.include_role динамически загружает задачи из указанной роли в текущий сценарий автоматизации и выполняет их.
Особенности работы#
Особенности использования модуля ansible.builtin.include_role:
Модуль
ansible.builtin.include_roleпозволяет включать задачи из роли динамически, то есть в момент выполнения сценария, а не статически при подготовке (parsing) сценария, как это делается при использовании директивыroles.Модуль может быть использован только там, где разрешено использование задач Ansible: внутри объектов
pre_tasks,tasksилиpost_tasksв сценариях, а также как задача внутри роли.Директивы
when,loopиwith_применяются к подключающей роль задаче, а не к задачам подключаемой роли. Чтобы применить условие или цикл к задачам роли, используйте параметрapplyили модуль ansible.builtin.import_role.Модуль игнорирует некоторые директивы, такие как
untilиretries.Модуль не выполняется внутри обработчиков (handlers).
Обработчики (handlers) роли, определенные в подключаемой роли, становятся доступными всему сценарию.
Для статического подключения ролей рекомендуется использовать модуль ansible.builtin.import_role.
Параметры#
Модуль принимает следующие параметры:
- allow_duplicates#
Определяет, можно ли вызывать одну и ту же роль несколько раз с одинаковыми параметрами (одинаковыми значениями переменных).
Этот параметр переопределяет настройку
allow_duplicatesиз метаданных роли (файлmeta/main.yml).Возможные значения:
false– использовать роль повторно нельзя;true– использовать роль повторно можно.
Значение по умолчанию:
true.
- apply#
Директивы, которые нужно применить к каждой задаче роли.
- defaults_from#
Файл, который необходимо загрузить из каталога роли
defaults/.Значение по умолчанию:
main.
- handlers_from#
Файл, который необходимо загрузить из каталога роли
handlers/.Значение по умолчанию:
main.
- name#
Обязательный параметр.
Название роли, которую необходимо выполнить.
- public#
Определяет, будут ли переменные
varsиdefaultsиз роли доступны для последующих задач сценария.Это отличается от поведения при использовании директивы
rolesили модуля ansible.builtin.import_role, где переменные доступны уже на этапе обработки сценария и могут использоваться предыдущими задачами и ролями.Возможные значения:
false– переменные роли недоступны для последующих задач;true– переменные роли доступны для последующих задач.
Значение по умолчанию:
false.
- rolespec_validate#
Проверка спецификации аргументов, если она определена.
Возможные значения:
false– отключить проверку;true– включить проверку.
Значение по умолчанию:
true.
- tasks_from#
Файл, который необходимо загрузить из каталога роли
tasks/.Значение по умолчанию:
main.
- vars_from#
Файл, который необходимо загрузить из каталога роли
vars/.Значение по умолчанию:
main.
Атрибуты#
Атрибуты определяют функции Ansible, которые может использовать модуль.
Атрибут |
Описание |
|---|---|
|
Модуль не имеет соответствующего расширения действия (action plugin), которое выполняет работу на управляющем узле. |
|
Модуль не поддерживает асинхронное выполнение. |
|
Модуль не поддерживает повышение привилегий. |
|
Модуль не поддерживает глобальное выполнение задачи. |
|
Модуль поддерживает директивы |
|
Модуль работает в режиме проверки ( |
|
Модуль не использует информацию о настройках подключения к целевому узлу при выполнении заданий на нем. |
|
Функциональность модуля не может быть изменена с помощью расширений. |
|
Модуль не поддерживает |
|
Модуль не поддерживает режим сравнения. |
|
Модуль поддерживает директиву |
|
Модуль поддерживает все платформы, с которыми может работать Ansible. |
|
Модуль поддерживает директиву |
|
Модуль не поддерживает механизм повторных попыток. |
Примеры#
Для изучения возможностей модуля ознакомьтесь с приведенными ниже примерами.
Простое выполнение роли#
Следующий пример демонстрирует выполнение роли astra.nginx.nginx:
---
# ...
tasks:
- name: Using astra.nginx.nginx
ansible.builtin.include_role:
name: astra.nginx.nginx
Выполнение роли с указанием файла задач#
Следующий пример демонстрирует выполнение роли astra.ald_pro.controller с использованием задач не из основного файла main.yml, а из файла other.yml в каталоге tasks/ роли:
---
# ...
tasks:
- name: Run tasks/other.yaml instead of 'main'
ansible.builtin.include_role:
name: astra.ald_pro.controller
tasks_from: other
Передача переменных роли при выполнении#
Следующий пример демонстрирует выполнение роли с передачей ее параметров с помощью директивы vars:
---
# ...
tasks:
- name: Pass variables to role
ansible.builtin.include_role:
name: astra.nginx.nginx
vars:
use_ssl: true
nginx_package_version: 1.22.1-9
Использование роли в цикле#
Следующий пример демонстрирует выполнение нескольких ролей из коллекции astra.hardening в цикле:
---
# ...
tasks:
- name: Use roles in loop
ansible.builtin.include_role:
name: "{{ item }}"
loop:
- astra.hardening.devsec
- astra.hardening.fstec