隐藏跳过的ansible任务而不使用显示\u跳过的\u主机

隐藏跳过的ansible任务而不使用显示\u跳过的\u主机,ansible,Ansible,我在这方面负有责任: --- -导入任务:foo.yml 什么时候:应该Runfoo 如果ShouldRunFoo==false则跳过该文件,但控制台显示其任务(作为“跳过”) 我可以使用display\u skipped\u hosts=no,但这会隐藏剧本中跳过的所有内容,而不仅仅是foo.yml 有办法做到这一点吗?我希望看到跳过的任务,而不是那些来自foo.yml(如果被跳过)的任务。前一段时间我一直在努力解决这个问题,使用不同的来源,我发现了一种不太干净的方法,但却做到了这一点。(我

我在这方面负有责任:

---
-导入任务:foo.yml
什么时候:应该Runfoo
如果
ShouldRunFoo==false
则跳过该文件,但控制台显示其任务(作为“跳过”)

我可以使用
display\u skipped\u hosts=no
,但这会隐藏剧本中跳过的所有内容,而不仅仅是
foo.yml


有办法做到这一点吗?我希望看到跳过的任务,而不是那些来自
foo.yml
(如果被跳过)的任务。

前一段时间我一直在努力解决这个问题,使用不同的来源,我发现了一种不太干净的方法,但却做到了这一点。(我假设您知道
显示\u跳过的\u hosts=no
,并且您仍然希望打印一些跳过的内容)

您可以使用Jinja表达式执行循环,从调试输出中删除消息(任务的标题将始终显示):

---
-主持人:全部
任务:
-名称:要跳过并显示的任务
调试:
msg:“你好,世界”
当:“\u组名称中的‘某物’”
-名称:要跳过且不显示的任务
调试:
msg:“你好,世界”
循环:“{%if'SOMETHING'在组_names%}{{debug_list}}{%else%}[]{%endif%}”
如果在特定用例中,您可以使用
导入任务
包含任务
,然后执行以下操作:

$cat playbook.yml

PLAY [localhost] **************************************************************

TASK [Gathering Facts] ********************************************************
ok: [localhost]

TASK [debug] ******************************************************************
skipping: [localhost]

TASK [debug] ******************************************************************
skipping: [localhost]

TASK [debug] ******************************************************************
skipping: [localhost]

TASK [subtasks will not be printed] *******************************************
skipping: [localhost]

PLAY RECAP ********************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=4 rescued=0 ignored=0
---
-主机:本地主机
任务:
-名称:将打印子任务
导入任务:tasks.yml
何时:假
-名称:将不打印子任务

include_tasks:tasks.yml#谢谢,但是在导入任务时如何使用它呢?循环不适用于导入。所有这些变量都是什么,没有上下文,例如,
debug\u list