Разделение плейбуков с помощью import и include
Статическое и динамическое включение задач
«Разделение плейбуков с помощью import и include» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Один огромный файл мешает
Плейбук на 500 строк трудно читать и повторно использовать. Ansible позволяет разделить работу на части и подключать их там, где это необходимо. ✂️
Два семейства: import и include
Ansible предлагает два способа повторного использования: import_* для статического подключения и include_* для динамического подключения. Разница заключается в моменте обработки.
Статический import_tasks
import_tasks предварительно обрабатывается при разборе плейбука, до запуска любой задачи. Это фиксированный и предсказуемый вариант.
- import_tasks: setup.ymlДинамический include_tasks
include_tasks обрабатывается во время выполнения, по порядку, поэтому может реагировать на переменные и результаты, определённые ранее в плей.
- include_tasks: "{{ os_family }}.yml"Почему важен момент выполнения
Поскольку import статичен, в его имени файла нельзя использовать переменную времени выполнения. Для этого вместо него нужен динамический include_tasks.
Для циклов нужен include
Хотите повторить целый файл? Только include_tasks поддерживает цикл, поскольку набор файлов определяется во время выполнения плей.
- include_tasks: user.yml
loop: "{{ users }}"Теги ведут себя по-разному
Тег у import_tasks применяется ко всем импортированным задачам, а тег у include_tasks — только к самой директиве подключения.
Импорт целых плейбуков
На верхнем уровне используйте import_playbook, чтобы объединять целые плейбуки. Именно так site.yml собирает Ваш проект.
- import_playbook: webservers.yml
- import_playbook: dbservers.ymlПовторное использование в разных плейах
Общие файлы задач, например файл начальной настройки, можно импортировать во множество плейбуков, поэтому Вы пишете логику один раз и повторно используете её повсюду.
Разумный вариант по умолчанию
Предпочитайте import для предсказуемых шагов, которые должны выполняться всегда. Используйте include только тогда, когда действительно нужны решения во время выполнения, например циклы или имена файлов из переменных.
Разделение на практике
Здесь плей импортирует статический файл настройки, а затем условно подключает файл для конкретной OS. Два инструмента — две задачи. 🎯
tasks:
- import_tasks: base.yml
- include_tasks: "{{ ansible_os_family }}.yml"Быстрая проверка
Вам нужно имя файла, составленное из переменной времени выполнения. Какая директива подходит?
Итоги
Вы узнали, что import_* является статическим и разбирается заранее, а include_* является динамическим и выполняется на своём месте, позволяя использовать циклы и имена файлов из переменных. ✅
Часто задаваемые вопросы
Урок «Разделение плейбуков с помощью import и include» бесплатный?
Да — полный текст урока «Разделение плейбуков с помощью import и include» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Разделение плейбуков с помощью import и include»?
Статическое и динамическое включение задач Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Разделение плейбуков с помощью import и include»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Рекомендуемая структура каталогов
- Каталоги group_vars и host_vars
- Разделение плейбуков с помощью import и include
- Именование, комментарии и стиль для масштабирования