如何在Ansible中隐藏跳过的任务输出

32c*_*upo 18 plugins output ansible

例如,我有Ansible角色

---
- name: Deploy app1
  include: deploy-app1.yml
  when: 'deploy_project == "{{app1}}"'

- name: Deploy app2
  include: deploy-app2.yml
  when: 'deploy_project == "{{app2}}"'
Run Code Online (Sandbox Code Playgroud)

但我只在一个角色调用中部署了一个应用程序.当我部署多个应用程序时,我多次调用角色.但每次都有很多skipped tasks output(来自不通过条件的任务),我不想看到.我怎么能避免呢?

Oma*_*r E 18

我假设你不想在运行Ansible时看到输出中跳过的任务.

在ansible.cfg文件中将此值设置为false.

display_skipped_hosts = false
Run Code Online (Sandbox Code Playgroud)

注意.它仍然会输出任务的名称,虽然它不会再显示"跳过".

更新:通过您需要确保ansible.cfg在当前工作目录中的方式.

取自ansible.cfg文件.

ansible将读取当前工作目录中的ANSIBLE_CONFIG,ansible.cfg,主目录中的.ansible.cfg或/etc/ansible/ansible.cfg,无论它首先找到哪个.

因此,请确保设置display_skipped_hosts = false正确的ansible.cfg文件.

让我知道你怎样去


yda*_*coR 10

Ansible允许您使用自定义回调控制其输出.

在这种情况下,您可以简单地使用不会在跳过的任务上输出任何内容的skippy回调.

  • @ 32cupo啊,对不起.我错过了你谈论跳过任务的**名字**的事实.在做出任何决定之前打印名称,所以你不能那么简单地删除它们.它是以这种方式完成的,因为您可能会为主机子集跳过任务.您唯一的选择是手工制作的插件. (4认同)
  • @ konstantin-suvorov当我将stdout_callback属性设置为skippy时,显示行为与将skippy复制到回调目录相同。Ansible仍显示已跳过任务的名称。 (2认同)
  • 回调的正确链接是:https://docs.ansible.com/ansible/latest/plugins/callback/skippy.html 注意:它已被弃用,并将在 2.11 中删除 (2认同)

小智 10

ansible 2.4开始,添加了一个回调插件名称full_skip,以禁止跳过任务名称并跳过ansible输出中的关键字.您可以尝试以下ansible配置:

[defaults]
stdout_callback = full_skip
Run Code Online (Sandbox Code Playgroud)

  • 从 Ansible 2.11 开始,设置“display_skipped_hosts=False”。“full_skip”插件现已弃用。 (3认同)
  • 这是唯一符合我想要的答案:+1: (2认同)