指定标记时,Ansible include_任务将不会运行

指定标记时,Ansible include_任务将不会运行,ansible,ansible-2.x,Ansible,Ansible 2.x,我在main.yml中包含了如下所示的一些任务(作为其他几个任务列表中的任务之一) 当我运行playbook指定--tags never时,它只是不运行,而是显示下面的输出 PLAY [all] ***************************************************************************************************************************************************** T

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

当我运行playbook指定
--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 
如果我没有指定并注释掉该组中的其他任务(加上删除
never
标记)。它运行正常


为什么会有这种行为?我应该怎么做才能使它正确运行?

这种行为似乎很正常,而且在
swarm.undo.yml
中,您可能没有任何任务标记为
never

根据规定,标签适用于任务和重头戏。因此,当您指定
--tags never
时,
include_tasks
(这是一个任务)将按预期被包含。但是只有
swarm.undo.yml
中带有
never
标记的任务才会运行

从上述链接中引用:

Ansible为特殊行为保留两个标记名:
始终
从不
。如果将
始终
标记指定给任务或播放,Ansible将始终运行该任务或播放

选项1:因此,一种方法是确保
swarm.undo.yml
中的相关任务具有
never
标记

<强>选项2:如果有很多任务,所有都应该被标记为<代码> No.<代码>,您可以考虑将此任务文件转换为PrasBooad(带有播放级别的标签),并使用<代码> Ipple PraseBoo< <代码> >

示例
swarm.undo.yml

-主机:myhosts
标签:
-从来没有
任务:
#你的任务在这里
然后在
main.yml
中:

-名称:包括群撤销
导入剧本:swarm.undo.yml

这种行为似乎很正常,在
swarm.undo.yml
中,您可能没有任何任务标记为
never

根据规定,标签适用于任务和重头戏。因此,当您指定
--tags never
时,
include_tasks
(这是一个任务)将按预期被包含。但是只有
swarm.undo.yml
中带有
never
标记的任务才会运行

从上述链接中引用:

Ansible为特殊行为保留两个标记名:
始终
从不
。如果将
始终
标记指定给任务或播放,Ansible将始终运行该任务或播放

选项1:因此,一种方法是确保
swarm.undo.yml
中的相关任务具有
never
标记

<强>选项2:如果有很多任务,所有都应该被标记为<代码> No.<代码>,您可以考虑将此任务文件转换为PrasBooad(带有播放级别的标签),并使用<代码> Ipple PraseBoo< <代码> >

示例
swarm.undo.yml

-主机:myhosts
标签:
-从来没有
任务:
#你的任务在这里
然后在
main.yml
中:

-名称:包括群撤销
导入剧本:swarm.undo.yml

当Ansible中的更改发生时,我必须在所有包含的文件中添加块,并配置相关标记

但是,从Ansible 2.7开始,您可以告诉Ansible将特定标记应用于所有包含的任务。这意味着您不需要在
swarm.undo.yml
中进行任何更改。上面的
main.yml
示例如下所示:

-名称:删除群集
包括以下任务:
文件:swarm.undo.yml
#将这些标记添加到所有包含的任务中
标记:['从不','调试']
标记:['从不','调试']

当Ansible中的更改发生时,我必须在所有包含的文件中添加块,并配置相关标记

但是,从Ansible 2.7开始,您可以告诉Ansible将特定标记应用于所有包含的任务。这意味着您不需要在
swarm.undo.yml
中进行任何更改。上面的
main.yml
示例如下所示:

-名称:删除群集
包括以下任务:
文件:swarm.undo.yml
#将这些标记添加到所有包含的任务中
标记:['从不','调试']
标记:['从不','调试']

谢谢。我不知道我也必须在文件中标记任务。谢谢。我不知道我也必须在文件中标记任务。
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