Spec-Zone.ru › Ansible 2.9

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

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

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

Как отмечалось в Создание повторно используемых Playbook, инструкции include и import очень похожи, но движок Ansible обрабатывает их по-разному.

  • Все инструкции import* обрабатываются при разборе Playbook.
  • Все инструкции include* обрабатываются по мере их обнаружения во время выполнения Playbook.

Обратитесь к Создание повторно используемых Playbook для получения информации о компромиссах, которые могут возникнуть при использовании каждого типа.

Также имейте в виду, что это поведение изменилось в версии 2.4. До Ansible 2.4 был доступен только include, и его поведение отличалось в зависимости от контекста.

Новое в версии 2.4.

Импорт Playbook

Возможен импорт Playbook в основной Playbook. Например:

- import_playbook: webservers.yml
- import_playbook: databases.yml

Игры и задачи в каждом указанном Playbook будут выполняться в порядке их перечисления, так как если бы они были определены здесь непосредственно.

До версии 2.4 был доступен только include, и он работал как для Playbook, так и для задач как для импорта, так и для включения.

Новое в версии 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 задач могут использоваться на произвольном уровне вложенности.

Примечание

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

Инструкции include и import также могут использоваться в разделе handlers:. Например, если вы хотите определить, как перезапустить Apache, вы должны это сделать только один раз для всех ваших Playbook. Вы можете создать handlers.yml, который выглядит так:

# more_handlers.yml
- name: restart apache
  service:
    name: apache
    state: restarted

И в вашем основном файле Playbook:

handlers:
- include_tasks: more_handlers.yml
# or
- import_tasks: more_handlers.yml

Примечание

Убедитесь, что вы ознакомились с ограничениями/компромиссами обработчиков, указанными в Создание повторно используемых Playbook.

Вы можете смешивать включения с обычными задачами и обработчиками, не включенными в них.

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

Подробную информацию о включении и импорте ролей см. в Роли.

См. также

YAML-синтаксис
Узнайте о синтаксисе YAML
Работа с Playbook
Обзор основных функций языка Playbook
Рекомендованные практики
Различные рекомендации по управлению Playbook в реальном мире
Использование переменных
Все о переменных в Playbook
Условные операторы
Условные операторы в Playbook
Циклы
Циклы в Playbook
Все модули
Узнайте о доступных модулях
Стоит ли разрабатывать модуль?
Узнайте, как расширить Ansible, написав собственные модули
Примеры Ansible на GitHub
Полные файлы Playbook из исходного кода проекта 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.9/user_guide/playbooks_reuse_includes.html

Spec-Zone.ru

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