Spec-Zone.ru › Ansible 2.8

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

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

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

Как отмечено в Создание повторно используемых 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: вместо этого.

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

Spec-Zone.ru

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