Spec-Zone.ru › Ansible 2.5

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

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

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

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

Spec-Zone.ru

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