import_role#
Модуль ansible.builtin.import_role импортирует роль в конкретное место сценария.
Особенности работы#
Особенности использования модуля ansible.builtin.import_role:
В отличие от директивы
roles, которая загружает роли целиком на этапе обработки сценария и выполняет их в порядке объявления, модульansible.builtin.import_roleпозволяет точнее контролировать момент выполнения задач роли внутри сценария.Большинство директив, например,
when,loop,with_, при использовании с модулемansible.builtin.import_roleприменяются к каждой отдельной задаче, импортированной из роли. Если необходимо, чтобы условие или цикл применялись именно к команде импорта целиком (то есть, чтобы роль выполнялась или пропускалась целиком), используйте ansible.builtin.include_role.Модуль не выполняется внутри обработчиков (handlers).
Обработчики импортированной роли доступны всему сценарию.
Переменные, определенные в каталогах роли
vars/иdefaults/, становятся доступными всему сценарию на этапе обработки. Это означает, что такие переменные будут доступны для ролей и задач, выполняемых до вызова модуляansible.builtin.import_role.В отличие от модуля ansible.builtin.include_role, доступность переменных роли при использовании модуля
ansible.builtin.import_roleне настраивается – они всегда доступны.Модуль автоматически определяет расширение файлов, указанных в значениях параметров
defaults_from,handlers_from,tasks_fromиvars_from.
Параметры#
Модуль принимает следующие параметры:
- allow_duplicates#
Определяет, можно ли вызывать одну и ту же роль несколько раз с одинаковыми параметрами (одинаковыми значениями переменных).
Этот параметр переопределяет настройку
allow_duplicatesиз метаданных роли (файлmeta/main.yml).Возможные значения:
false– использовать роль повторно нельзя;true– использовать роль повторно можно.
Значение по умолчанию:
true.
- defaults_from#
Файл, который необходимо загрузить из каталога роли
defaults/.Значение по умолчанию:
main.
- handlers_from#
Файл, который необходимо загрузить из каталога роли
handlers/.Значение по умолчанию:
main.
- name#
Обязательный параметр.
Название роли, которую необходимо импортировать.
- rolespec_validate#
Проверка спецификации аргументов, если она определена.
Возможные значения:
false– отключить проверку;true– включить проверку.
Значение по умолчанию:
true.
- tasks_from#
Файл, который необходимо загрузить из каталога роли
tasks/.Значение по умолчанию:
main.
- vars_from#
Файл, который необходимо загрузить из каталога роли
vars/.Значение по умолчанию:
main.
Атрибуты#
Атрибуты определяют функции Ansible, которые может использовать модуль.
Атрибут |
Описание |
|---|---|
|
Модуль не имеет соответствующего расширения действия (action plugin), которое выполняет работу на управляющем узле. |
|
Модуль не поддерживает асинхронное выполнение. |
|
Модуль не поддерживает повышение привилегий. |
|
Импорт выполняется не поочередно для каждого узла, а один раз для всей группы.
При этом игнорируются ограничения по узлам, циклы, а также параметры |
|
Модуль игнорирует операторы цикла |
|
Модуль работает в режиме проверки ( |
|
Модуль не использует информацию о настройках подключения к целевому узлу при выполнении заданий на нем. |
|
Функциональность модуля не может быть изменена с помощью расширений. |
|
Модуль не поддерживает |
|
Модуль не поддерживает режим сравнения. |
|
Модуль игнорирует директиву |
|
Модуль поддерживает все платформы, с которыми может работать Ansible. |
|
Модуль поддерживает директиву |
|
Модуль не поддерживает механизм повторных попыток. |
Примеры#
Для изучения возможностей модуля ознакомьтесь с приведенными ниже примерами.
Простой импорт роли#
Следующий пример демонстрирует импорт роли myrole:
---
# ...
tasks:
- name: Importing myrole
ansible.builtin.import_role:
name: myrole
Импорт роли с указанием файла задач#
Следующий пример демонстрирует импорт роли myrole с выполнением задач из файла tasks/other.yml, а не из файла по умолчанию tasks/main.yml:
---
# ...
tasks:
- name: Run tasks/other.yaml instead of main
ansible.builtin.import_role:
name: myrole
tasks_from: other
Передача переменных роли при импорте#
Следующий пример демонстрирует импорт роли с передачей ей параметров с помощью директивы vars:
---
# ...
tasks:
- name: Pass variables to role
ansible.builtin.import_role:
name: myrole
vars:
rolevar1: value1
rolevar2: value2
Применение условия к задачам роли#
Следующий пример демонстрирует применение условия when ко всем задачам, импортируемым из роли:
---
# ...
tasks:
- name: Apply condition to each task in role
ansible.builtin.import_role:
name: myrole
when: some_condition == true