Ansible 2.8.1
В моей пьесе tasks/
реж:
main.yml
dev.yml
В main.yml
У меня такой блок:
- include_tasks: dev.yml
when: ec2_tag_env == 'dev'
Отлично работает
Однако, если я попытаюсь вызвать конкретную задачу в dev.yml с помощью тега. Это не квалифицирует задачу во время выполнения
Например, эта помеченная задача в dev.yml
:
- name: Pull the latest image
docker_image:
name: "{{ dev_image }}"
source: pull
tags:
- container
Когда я запускаю playbook с -t container
он НЕ будет соответствовать требованиям, поскольку include_tasks
step не имеет этого тега.
Добавление тега в include_tasks
конечно, устранит проблему, но тогда мне нужно будет отслеживать теги по мере их добавления в подзадачи и также добавлять их сюда:
- include_tasks: dev.yml
when: ec2_tag_env == 'dev'
tags:
- container
Вопросы
Возможно ли, чтобы Ansible просто «знал», какие задачи находятся в include_tasks
заблокировать и вытащить соответствующие теги?
Как лучше всего достичь этой цели?
Что бы я предпочел не нужно сделать:
main.yml
. У меня так много задач в этой книге, что я действительно хочу, чтобы они были организованы в файлы.include_tasks
блоки со всеми вложенными тегами вручную. Похоже на кошмар.Вопрос: «Возможно ли, чтобы Ansible просто« знал », какие задачи находятся в блоке include_tasks, и извлекал соответствующие теги?»
A: Нет. То, что находится внутри включенной задачи, будет доступно после того, как поток управления достигнет include_task
заявление и файл включен.
Вопрос: «Каков наилучший способ достижения этой цели?»
A: Используйте import_tasks
. Импорт считывается при запуске playbook.