不使用display_skipped_hosts隐藏跳过的可执行任务



我有一个可靠的角色:

---
- import_tasks: foo.yml
when: ShouldRunFoo

如果ShouldRunFoo == false,则跳过该文件,但控制台显示其任务(显示为"跳过"(。

我可以使用display_skipped_hosts = no配置选项,但它隐藏了剧本中跳过的所有内容,而不仅仅是foo.yml

有办法做到这一点吗?我希望看到跳过的任务,只是不希望看到foo.yml中的任务(如果跳过的话(。

不久前,我曾与之斗争过,使用不同的来源,我发现了一种方法,虽然不太干净,但它确实有效。(我假设你知道display_skipped_hosts=no,但你仍然想打印一些跳过的(

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

---
- hosts: all
tasks:
- name: task to skip and display
debug:
msg: "HELLO WORLD"
when: "'SOMETHING' in group_names"
- name: task to skip and  not display
debug:
msg: "HELLO WORLD"
loop: "{% if 'SOMETHING' in group_names%} {{debug_list}}{% else %}[]{% endif %}"

如果在特定用例中,您可以使用import_tasksinclude_tasks,则执行以下操作:

$ cat playbook.yml:

---
- hosts: localhost
tasks:
- name: subtasks will be printed
import_tasks: tasks.yml
when: false
- name: subtasks will not be printed
include_tasks: tasks.yml            # <----------
when: false

$ cat tasks.yml:

---
- debug: msg=1
- debug: msg=2
- debug: msg=3

$ ansible-playbook 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

我想这并不总是适用的,所以这不是一个完美的解决方案。

相关内容

  • 没有找到相关文章

最新更新