Ansible Academy · Урок

Разделение плейбуков с помощью import и include

Статическое и динамическое включение задач

Урок 3 из 413 шагов

«Разделение плейбуков с помощью import и include» — бесплатный урок Ansible Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ansible Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ansible Academy содержит 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_* является динамическим и выполняется на своём месте, позволяя использовать циклы и имена файлов из переменных. ✅

Можно начать бесплатно

Изучай YAML с ИИ-репетитором — бесплатно

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

Курсы
30
Уроки
120

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

Урок «Разделение плейбуков с помощью import и include» бесплатный?

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

Чему я научусь в уроке «Разделение плейбуков с помощью import и include»?

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

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

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

Сколько времени занимает урок «Разделение плейбуков с помощью import и include»?

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

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

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

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

  1. Рекомендуемая структура каталогов
  2. Каталоги group_vars и host_vars
  3. Разделение плейбуков с помощью import и include
  4. Именование, комментарии и стиль для масштабирования
← Назад к Ansible Academy