include_tasks#

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

Внимание

Модуль является частью ядра Ansible, поэтому не может быть переопределен или расширен.

Модули ansible.builtin.import_tasks и ansible.builtin.include_tasks выполняют схожие, но принципиально разные функции и применяются в разных ситуациях:

  • ansible.builtin.import_tasks импортирует задачи на этапе загрузки сценария, то есть до начала его выполнения. Поэтому директивы управления потоком (when, loop, register и так далее) не применяются к ansible.builtin.import_tasks напрямую, а должны быть указаны внутри самих импортируемых задач.

  • ansible.builtin.include_tasks включает задачи динамически: во время выполнения сценария, в момент выполнения этой директивы. Это позволяет применять к ней управляющие конструкции снаружи, на уровне включения. ansible.builtin.include_tasks поддерживает все конструкции управления, кроме do-until.

Параметры#

Модуль принимает следующие параметры:

apply#

Словарь параметров (например, tags, become), которые будут применяться ко всем задачам в импортируемом файле.

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

file#

Название файла со списком задач, который будет добавлен в текущий сценарий.

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

Например, описания этих двух задач эквивалентны:

---
# ...
  tasks:
    - name: Include tasks using parameter
      ansible.builtin.include_tasks:
        file: tasks/setup.yml

    - name: Include tasks using short form
      ansible.builtin.include_tasks: tasks/setup.yml

Атрибуты#

Атрибуты определяют особенности поведения модуля в различных режимах Ansible.

Атрибут

Описание

action

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

async

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

become

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

bypass_host_loop

Модуль не поддерживает глобальное выполнение задачи.

bypass_task_loop

Модуль обрабатывает директивы loop и with_.

check_mode

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

connection

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

core

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

delegation

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

diff_mode

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

ignore_conditional

Модуль обрабатывает директиву when.

platform

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

tags

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

until

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

Примеры#

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

Базовое включение задач#

Следующий пример демонстрирует включение файла stuff.yaml во время выполнения сценария:

---
# ...
  tasks:
    - name: Include task list in play
      ansible.builtin.include_tasks:
        file: stuff.yaml

Использование сокращенной формы записи#

Следующий пример демонстрирует использование упрощенной записи без параметра file:

---
# ...
  tasks:
    - name: Include task list using free-form
      ansible.builtin.include_tasks: stuff.yaml

Динамический выбор файла задач#

Следующий пример демонстрирует подстановку названия файла в параметр file, чтобы включать соответствующий список задач в зависимости от операционной системы:

---
# ...
  tasks:
    - name: Include OS-specific tasks
      ansible.builtin.include_tasks: "setup_{{ ansible_facts['os_family'] | lower }}.yml"

Передача тегов ко всем задачам#

Следующий пример демонстрирует задание тега install для всех задач в файле install.yml:

---
# ...
  tasks:
    - name: Apply tags to tasks within included file
      ansible.builtin.include_tasks:
        file: install.yml
        apply:
          tags:
            - install