include_role и import_role во время выполнения
Динамически вызывайте роли в середине плейбука
«include_role и import_role во время выполнения» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Не только список ролей
Список roles верхнего уровня применяет роли до выполнения любых задач. Иногда роль требуется запустить в середине плейбука, именно там, где находится задача.
Вызов роли как задачи
И include_role, и import_role позволяют вызвать роль внутри раздела задач, в соответствии с остальными шагами.
tasks:
- import_role:
name: nginximport_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) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «include_role и import_role во время выполнения»?
Динамически вызывайте роли в середине плейбука Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «include_role и import_role во время выполнения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Зависимости ролей в meta/main.yml
- defaults и vars: порядок переопределения
- include_role и import_role во время выполнения
- allow_duplicates и идемпотентность ролей