Включение и импорт
- Включение и импорт: различия
- Импорт плейбуков
- Включение и импорт файлов задач
- Включение и импорт ролей
Включение и импорт: различия
Как отмечалось в Создание многократно используемых плейбуков, операторы включения и импорта очень похожи, однако движок Ansible обрабатывает их по-разному.
- Все операторы
import*обрабатываются до начала выполнения плейбуков. - Все операторы
include*обрабатываются по мере выполнения плейбука.
Обратитесь к Создание многократно используемых плейбуков для получения информации о возможных компромиссах при использовании каждого типа оператора.
Также имейте в виду, что это поведение изменилось в версии 2.4. До Ansible 2.4 был доступен только include, и его поведение зависело от контекста.
Введено в версии 2.4.
Импорт плейбуков
Можно включать плейбуки в основной плейбук. Например:
- import_playbook: webservers.yml - import_playbook: databases.yml
Плейы и задачи из каждого указанного плейбука будут выполняться в том порядке, в котором они перечислены, так же, как если бы они были определены здесь напрямую.
До версии 2.4 был доступен только include, который работал как для плейбуков, так и для задач, как для импорта, так и для включения.
Введено в версии 2.4.
Включение и импорт файлов задач
Разбиение задач на отдельные файлы — отличный способ организовать сложные наборы задач или повторно использовать их. Файл задач содержит просто список задач:
# common_tasks.yml - name: placeholder foo command: /bin/foo - name: placeholder bar command: /bin/bar
Затем можно использовать import_tasks или include_tasks для выполнения задач из файла в главном списке задач:
tasks: - import_tasks: common_tasks.yml # or - include_tasks: common_tasks.yml
Также можно передавать переменные в импорты и включения:
tasks:
- import_tasks: wordpress.yml
vars:
wp_user: timmy
- import_tasks: wordpress.yml
vars:
wp_user: alice
- import_tasks: wordpress.yml
vars:
wp_user: bob
См. Приоритет переменных: Где следует поместить переменную? для получения дополнительных сведений о наследовании и приоритете переменных.
Операторы включения и импорта задач могут использоваться на любой глубине.
Примечание
- Статические и динамические переменные могут быть смешаны, но это не рекомендуется, так как это может привести к трудно диагностируемым ошибкам в плейбуках.
- Синтаксис
key=valueдля передачи переменных в операторы импорта и включения устарел. Используйте YAMLvars:вместо этого.
Включение и импорт также могут быть использованы в разделе handlers:. Например, если нужно определить, как перезапустить Apache, это нужно сделать только один раз для всех плейбуков. Можно создать handlers.yml который выглядит так:
# more_handlers.yml - name: restart apache service: name=apache state=restarted
И в главном файле плейбука:
handlers: - include_tasks: more_handlers.yml # or - import_tasks: more_handlers.yml
Примечание
Обратитесь к ограничениям/компромиссам для обработчиков, упомянутым в Создание многократно используемых плейбуков.
Можно смешивать включения с обычными задачами и обработчиками.
Включение и импорт ролей
Для получения подробной информации о включении и импорте ролей обратитесь к Ролям.
См. также
- Синтаксис YAML
- Узнайте о синтаксисе YAML
- Работа с плейбуками
- Обзор основных возможностей языка плейбуков
- Рекомендации по наилучшим практикам
- Различные советы по управлению плейбуками в реальном мире
- Переменные
- Все о переменных в плейбуках
- Условные операторы
- Условные операторы в плейбуках
- Циклы
- Циклы в плейбуках
- Все модули
- Узнайте о доступных модулях
- Разработка модулей
- Узнайте, как расширить Ansible, написав собственные модули
- Примеры Ansible на GitHub
- Полные файлы плейбуков из исходного кода проекта GitHub
- Список рассылки
- Вопросы? Помощь? Идеи? Задавайте их на списке рассылки Google Groups
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.6/user_guide/playbooks_reuse_includes.html