仅运行具有特定标签或未标签的任务

时间:2020-06-05 11:06:26

标签: ansible

在此剧本中:

- 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

1 个答案:

答案 0 :(得分:1)

这是可能的,的确如此:

例如,如果您只想运行“配置”,然后 在很长的剧本中,“包装”部分可以使用--tags选项 在命令行上:

ansible-playbook example.yml-标记“配置,程序包”

来源:https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html#tags

伴随:

标签还有另外3个特殊关键字:taggeduntaggedall,它们分别运行仅带标签的,仅不带标签的和所有任务。

来源:https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html#special-tags

所以您的解决方案是:

ansible-playbook --tags "untagged,A" playbook.yml