Spec-Zone.ru › Ansible 2.4

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

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

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

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

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

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

Также имейте в виду, что это поведение изменилось в версии 2.4; до этой версии Ansible была доступна только 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 wp_user=timmy
- import_tasks: wordpress.yml wp_user=alice
- import_tasks: wordpress.yml wp_user=bob

Переменные также могут передаваться в файлы включения с использованием альтернативного синтаксиса, который также поддерживает структурированные переменные, такие как словари и списки:

tasks:
- include_tasks: wordpress.yml
  vars:
    wp_user: timmy
    ssh_keys:
    - "{{ lookup('file', 'keys/one.pub') }}"
    - "{{ lookup('file', 'keys/two.pub') }}"

Используя любой из синтаксисов, переданные переменные могут использоваться в включенных файлах. Эти переменные будут доступны только задачам в пределах включенного файла. Подробнее о наследовании и приоритете переменных см. Приоритет переменных: Где мне следует поместить переменную?.

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

Примечание

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

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

Spec-Zone.ru

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