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

Модуль не имеет соответствующего расширения действия (action plugin), которое выполняет работу на управляющем узле.

async

Модуль не поддерживает асинхронное выполнение.

become

Модуль не поддерживает повышение привилегий.

bypass_host_loop

Импорт выполняется не поочередно для каждого узла, а один раз для всей группы. При этом игнорируются ограничения по узлам, циклы, а также параметры serial, throttle и шаблоны, зависящие от узла. Условия срабатывают при использовании run_once. Значения переменных берутся с первого доступного узла. Это действие не работает при использовании вне стратегии lockstep.

bypass_task_loop

Модуль игнорирует операторы цикла loop и with_ на уровне задачи, но цикл применяется к каждой задаче внутри импортированной роли.

check_mode

Модуль работает в режиме проверки (check_mode) в полном объеме.

connection

Модуль не использует информацию о настройках подключения к целевому узлу при выполнении заданий на нем.

core

Функциональность модуля не может быть изменена с помощью расширений.

delegation

Модуль не поддерживает delegate_to, то есть не может выполняться на другом узле.

diff_mode

Модуль не поддерживает режим сравнения.

ignore_conditional

Модуль игнорирует директиву when, однако импортированные задачи наследуют это условие.

platform

Модуль поддерживает все платформы, с которыми может работать Ansible.

tags

Модуль поддерживает директиву tags.

until

Модуль не поддерживает механизм повторных попыток.

Примеры#

Для изучения возможностей модуля ознакомьтесь с приведенными ниже примерами.

Простой импорт роли#

Следующий пример демонстрирует импорт роли 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