指定标签时,Ansible include_tasks 将不会运行

Cod*_*eed 2 ansible

我在 main.yml 中包含了一些如下所示的任务(作为其他几个任务列表中的任务之一)

- name          : remove swarm
  include_tasks : swarm.undo.yml
  tags          : [ 'never', 'debug' ]
Run Code Online (Sandbox Code Playgroud)

当我运行指定的剧本时,--tags never它只是不运行,但显示下面的输出。

PLAY [all] *****************************************************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************************************
ok: [node2]
ok: [node4]
ok: [node3]
ok: [node5]
ok: [node1]
ok: [node6]

TASK [swarm : remove swarm] ************************************************************************************************************************************
included: /home/xbox/Work/Infra/roles/swarm/tasks/swarm.undo.yml for node1, node2, node3, node4, node5, node6

PLAY RECAP *****************************************************************************************************************************************************
node1                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node2                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node3                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node4                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node5                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node6                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 
Run Code Online (Sandbox Code Playgroud)

如果我不指定并注释掉该组中的其他任务(加上删除标签never)。它按其应有的方式运行。

为什么会出现这种行为?我应该怎样做才能使其正确运行?

小智 5

您应该使用“apply”关键字,如果您没有使用该关键字,则该关键字不起作用。正确的语法(来自文档)是

- name: Apply tags to tasks within included file
  include_tasks:
    file: install.yml
    apply:
      tags:
        - install
Run Code Online (Sandbox Code Playgroud)

如果您想使用一个标签运行所有任务,最好的方法如下:

- name: Include and run an inner and an outer task
  include_tasks:
    file: install.yml
    apply:
      tags: install
  tags: install
Run Code Online (Sandbox Code Playgroud)