首页 > 解决方案 > 仅运行具有特定标记或未标记的任务

问题描述

在这个剧本中:

- 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

标签: ansible

解决方案


这确实是可能的:

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

ansible-playbook example.yml --tags “配置,包”

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

随着:

标记还有另外 3 个特殊关键字:和 tagged,它们分别只运行已标记、仅未标记和所有任务。untaggedall

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

所以你的解决方案是:

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

推荐阅读