Spec-Zone.ru › Ansible 2.6

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

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

Включение и импорт: различия

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

Spec-Zone.ru

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