Spec-Zone.ru › Ansible 2.7

Включение и импорт

  • Включение против импорта
  • Импорт плейбуков
  • Включение и импорт файлов задач
  • Включение и импорт ролей

Включение против импорта

Как отмечалось в Создание повторно используемых плейбуков, инструкции include и import очень похожи, однако движок 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

См. Приоритет переменных: Где следует поместить переменную? для получения более подробной информации о наследовании и приоритете переменных.

Инструкции include и import задач можно использовать на любой глубине.

Примечание

  • Статические и динамические методы могут быть смешаны, но это не рекомендуется, так как это может привести к трудно диагностируемым ошибкам в ваших плейбуках.
  • Синтаксис key=value для передачи переменных в импорт и включение устарел. Используйте YAML vars: вместо этого.

Включения и импорты также могут использоваться в разделе 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.7/user_guide/playbooks_reuse_includes.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API