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
当我使用-t container运行playbook时,它将不会被匹配,因为include_tasks步骤没有该标签。
将标签添加到
include_tasks当然可以解决这个问题,但我还需要跟踪标签添加到子任务中,并在这里添加它们:
- include_tasks: dev.yml
when: ec2_tag_env == 'dev'
tags:
- container
问题
是否可能让Ansible自动识别
include_tasks块中的任务并提取相应的标签?实现这个目标的最佳做法是什么?
我不愿意做的事情:
- 把所有任务都放在
main.yml中。我的playbook中有很多任务,我真的希望能够将它们组织成文件。 - 手动为所有的
include_tasks块及其子标签打上标签。听起来像是一个管理的噩梦。
apply:标签构造使得被包含的任务文件中的每个任务都表现得好像它们有应用的标签吗?在install.yml中的每个任务上添加tags: 'install'是否类似于将 'install' 标签应用于include_task上? - Jeter-workinclude_tasks级别上缺失的标签继承。 - Vladimir Botka