在此剧本中:
- hosts: all
tasks:
- name: task A
debug: msg="task A"
tags:
- A
- name: task B
debug: msg="task B"
tags:
- B
- name: untagged task
debug: msg="untagged task"
我想运行带有标签A
和未标记任务的任务。
我知道--skip-tags
选项,但这是一个简化的示例。
我的用例是一个非常复杂的剧本,其中包含许多标签和具有不同标签任务的角色,以及带标签的任务和非带标签的任务之间的相互依赖性。长话短说,对我而言,唯一的“清洁”选项是仅运行指定的标记和未标记的标记。
是否可以调用ansible-playbook
,使其仅运行特定的标记和未标记的任务?
我正在使用ansible 2.9.6
答案 0 :(得分:1)
这是可能的,的确如此:
例如,如果您只想运行“配置”,然后 在很长的剧本中,“包装”部分可以使用--tags选项 在命令行上:
ansible-playbook example.yml-标记“配置,程序包”
来源:https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html#tags
伴随:
标签还有另外3个特殊关键字:
tagged
,untagged
和all
,它们分别运行仅带标签的,仅不带标签的和所有任务。
来源:https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html#special-tags
所以您的解决方案是:
ansible-playbook --tags "untagged,A" playbook.yml