Назад | Перейти на главную страницу

Используйте Ansible include_tasks с тегами для подзадач

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, и извлекал соответствующие теги?»

A: Нет. То, что находится внутри включенной задачи, будет доступно после того, как поток управления достигнет include_task заявление и файл включен.

Вопрос: «Каков наилучший способ достижения этой цели?»

A: Используйте import_tasks. Импорт считывается при запуске playbook.