0Pricing
Ansible Academy · Урок

include_role и import_role во время выполнения

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

«include_role и import_role во время выполнения» — бесплатный урок Ansible Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ansible Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ansible Academy содержит 4 уроков всего.

Не только список ролей

Список roles верхнего уровня применяет роли до выполнения любых задач. Иногда роль требуется запустить в середине плейбука, именно там, где находится задача.

Вызов роли как задачи

И include_role, и import_role позволяют вызвать роль внутри раздела задач, в соответствии с остальными шагами.

tasks:
  - import_role:
      name: nginx

import_role статичен

import_role обрабатывается при разборе плейбука, до начала запуска. Его задачи подставляются заранее, поэтому они не могут зависеть от данных времени выполнения.

include_role динамичен

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

tasks:
  - include_role:
      name: backup
    when: do_backup

Цикл по роли

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

- include_role:
    name: deploy_app
  loop: "{{ app_list }}"

import_role не поддерживает циклы

Поскольку import_role разрешается во время разбора, он не поддерживает loop. Используйте include_role, когда нужно повторять роль.

Различия в поведении when

Параметр when у import_role копирует условие в каждую вложенную задачу. У include_role параметр when управляет всей ролью как единым блоком.

Передача переменных обоими способами

Обе формы принимают vars для параметризации роли, так же как список roles. Значения передаются непосредственно во включённую роль.

- include_role:
    name: web
  vars:
    http_port: 8080

Теги и статический или динамический импорт

При использовании import_role теги импортированных задач видны в --list-tags. При использовании include_role необходимо назначить теги самому включению.

Выберите подходящий инструмент

Выбирайте import_role для предсказуемой структуры, которая всегда выполняется. Используйте include_role, когда роль должна выполняться условно или в цикле.

Один шаблон на двух уровнях

Ansible предлагает такое же разделение на статические и динамические конструкции для файлов задач: import_tasks и include_tasks полностью соответствуют этим ключевым словам для ролей.

Быстрая проверка

Вспомните, какое ключевое слово позволяет применить роль внутри цикла.

Итоги

Используйте import_role для статической структуры, обрабатываемой во время разбора, а include_role — для динамического вызова во время выполнения с циклами и условиями. 🔁

Часто задаваемые вопросы

Урок «include_role и import_role во время выполнения» бесплатный?

Да — полный текст урока «include_role и import_role во время выполнения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ansible Academy, подпишись на CoddyKit PRO. Курс Ansible Academy содержит 4 уроков всего.

Чему я научусь в уроке «include_role и import_role во время выполнения»?

Динамически вызывайте роли в середине плейбука Ты практикуешь Ansible Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Ansible Academy?

Предыдущий опыт не требуется. Ansible Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «include_role и import_role во время выполнения»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Ansible Academy?

Да. Каждый урок Ansible Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Зависимости ролей в meta/main.yml
  2. defaults и vars: порядок переопределения
  3. include_role и import_role во время выполнения
  4. allow_duplicates и идемпотентность ролей
← Назад к Ansible Academy