Ansible 有没有办法隐藏/停止调试生成的某些输出

Ansible 有没有办法隐藏/停止调试生成的某些输出,ansible,Ansible,正在寻求帮助以了解为什么我有下面调试行的附加输出: - name: Check kernel diff become: true shell: "sdiff {{ item }}/pre-kernel.out {{ item }}/post-kernel.out | grep '|' | awk -F'|' '{print $2}' | xargs" register: "kernel" with_items: "{{work_dir}}" - debug: msg:

正在寻求帮助以了解为什么我有下面调试行的附加输出:

- name: Check kernel diff
  become: true
  shell: "sdiff {{ item }}/pre-kernel.out {{ item }}/post-kernel.out | grep '|' | awk -F'|' '{print $2}' | xargs"
  register: "kernel"
  with_items: "{{work_dir}}"
- debug: 
    msg: "The system is now running Kernel Version {{ item.stdout }}"
  when: "{{ item.changed == true }}"
  with_items: "{{ kernel.results}}"
msg的输出是正确的,但如何停止/隐藏其前面显示的所有详细信息:

TASK [patching : debug] ************************
[WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {% %}. Found: {{ item.changed == true }}
ok: [test02] => (item={'stderr_lines': [], 'ansible_loop_var': u'item', u'end': u'2020-05-26 16:23:37.068718', u'stderr': u'', u'stdout': u'4.14.35-1902.302.2.el7uek.x86_64', u'changed': True, 'failed': False, u'delta': u'0:00:00.008894', u'cmd': u"sdiff /var/tmp/patching_2020-05-26/pre-kernel.out /var/tmp/patching_2020-05-26/post-kernel.out | grep '|' | awk -F'|' '{print $2}' | xargs", 'item': u'/var/tmp/patching_2020-05-26', u'rc': 0, u'invocation': {u'module_args': {u'warn': True, u'executable': None, u'_uses_shell': True, u'strip_empty_ends': True, u'_raw_params': u"sdiff /var/tmp/patching_2020-05-26/pre-kernel.out /var/tmp/patching_2020-05-26/post-kernel.out | grep '|' | awk -F'|' '{print $2}' | xargs", u'removes': None, u'argv': None, u'creates': None, u'chdir': None, u'stdin_add_newline': True, u'stdin': None}}, 'stdout_lines': [u'4.14.35-1902.302.2.el7uek.x86_64'], u'start': u'2020-05-26 16:23:37.059824'}) => {
    "msg": "The system is now running Kernel Version 4.14.35-1902.302.2.el7uek.x86_64"
}
所以看起来更像是:

TASK [patching : debug] ************************
ok: [test02] => {
    "msg": "The system is now running Kernel Version 4.14.35-1902.302.2.el7uek.x86_64"
}
var_file.yml
供参考:

---
work_dir:
  - /var/tmp/patching_{{ansible_date_time.date}}
我一直用它作为指导

TL;博士 根据您的确切示例,这应该是您的调试任务:

-调试:
msg:“系统现在正在运行内核版本{{item.stdout}”
循环:“{kernel.results}}”
时间:item.changed
回路控制:
标签:“内核”
哪个会输出

TASK [debug] *******************************************************************
ok: [local] => (item=kernel) => {
    "msg": "The system is now running Kernel Version 4.14.35-1902.302.2.el7uek.x86_64"
}

您不能完全减少它,但您确实可以通过定义一个

在此
标签中
您可以选择Ansible在字典上循环而不是在整个字典上循环时要显示的字典属性之一

-调试:
msg:“系统现在正在运行内核版本{{item.stdout}”
循环:
-一些:福
迪克特:福
与:富
安:福
烦人的是:福
龙:福
名单:富
主席:傅
属性:foo
名称:酒吧
酒吧
回路控制:
标签:“{item.name}”
这将提供一个类似这样的概述

TASK [debug] *******************************************************************
ok: [local] => (item=bar) => {
    "msg": "The system is now running Kernel Version bar"
}   
与没有
循环控制的杂乱无章的相比

TASK [debug] *******************************************************************
ok: [local] => (item={'some': 'foo', 'dict': 'foo', 'with': 'foo', 'an': 'foo', 'annoyingly': 'foo', 'long': 'foo', 'list': 'foo', 'of': 'foo', 'attributes': 'foo', 'name': 'bar', 'stdout': 'bar'}) => {
    "msg": "The system is now running Kernel Version bar"
}

此外,为了修复警告,您只需删除Jinja花括号,因为
时总是假定您要传递一个Jinja表达式。
并且测试某物
==true
也是一个不需要的额外详细信息,
当:某物的计算结果为true
就足够了

所以你应该使用

when:item.changed
而不是你真正的

当:“{{item.changed==true}”
PS:因为Ansible 2.5应该是首选,而不是。

TL;博士 根据您的确切示例,这应该是您的调试任务:

-调试:
msg:“系统现在正在运行内核版本{{item.stdout}”
循环:“{kernel.results}}”
时间:item.changed
回路控制:
标签:“内核”
哪个会输出

TASK [debug] *******************************************************************
ok: [local] => (item=kernel) => {
    "msg": "The system is now running Kernel Version 4.14.35-1902.302.2.el7uek.x86_64"
}

您不能完全减少它,但您确实可以通过定义一个

在此
标签中
您可以选择Ansible在字典上循环而不是在整个字典上循环时要显示的字典属性之一

-调试:
msg:“系统现在正在运行内核版本{{item.stdout}”
循环:
-一些:福
迪克特:福
与:富
安:福
烦人的是:福
龙:福
名单:富
主席:傅
属性:foo
名称:酒吧
酒吧
回路控制:
标签:“{item.name}”
这将提供一个类似这样的概述

TASK [debug] *******************************************************************
ok: [local] => (item=bar) => {
    "msg": "The system is now running Kernel Version bar"
}   
与没有
循环控制的杂乱无章的相比

TASK [debug] *******************************************************************
ok: [local] => (item={'some': 'foo', 'dict': 'foo', 'with': 'foo', 'an': 'foo', 'annoyingly': 'foo', 'long': 'foo', 'list': 'foo', 'of': 'foo', 'attributes': 'foo', 'name': 'bar', 'stdout': 'bar'}) => {
    "msg": "The system is now running Kernel Version bar"
}

此外,为了修复警告,您只需删除Jinja花括号,因为
时总是假定您要传递一个Jinja表达式。
并且测试某物
==true
也是一个不需要的额外详细信息,
当:某物的计算结果为true
就足够了

所以你应该使用

when:item.changed
而不是你真正的

当:“{{item.changed==true}”
PS:由于应首选Ansible 2.5,而不是没有“回路控制”Ansible代码的。

    - name: 'Print message if CPU utilization become abnormal'
  debug:
    msg:
       - -------------------------------------------------------
       - CPU Utilization = ( 100 - idle time ) = "{{ item.stdout  }}"% is idle
       - -------------------------------------------------------
  #loop:
  with_items:
    - "{{ incidentcpuworknote_cpu }}"
    - "{{ incidentcpuworknote_cpu1 }}"
    - "{{ incidentcpuworknote_cpu2 }}"
  when: item.stdout| int <= 10
带“回路控制”的可转换代码

    - name: 'Print message if CPU utilization become abnormal'
  debug:
    msg:
       - -------------------------------------------------------
       - CPU Utilization = ( 100 - idle time ) = "{{ item.stdout  }}"% is idle
       - -------------------------------------------------------
  #loop:
  with_items:
    - "{{ incidentcpuworknote_cpu }}"
    - "{{ incidentcpuworknote_cpu1 }}"
    - "{{ incidentcpuworknote_cpu2 }}"
  when: item.stdout| int <= 10
注意:“循环控制”有助于避免在执行循环时出现不可靠的调试消息

- name: 'Print message if CPU utilization become abnormal'
  debug:
    msg:
       - -------------------------------------------------------
       - CPU Utilization = ( 100 - idle time ) = "{{ item.stdout  }}"% is idle
       - -------------------------------------------------------
  #loop:
  with_items:
    - "{{ incidentcpuworknote_cpu }}"
    - "{{ incidentcpuworknote_cpu1 }}"
    - "{{ incidentcpuworknote_cpu2 }}"
  when: item.stdout| int <= 10
  loop_control:
    label: "{{ item.stdout }}"
无“回路控制”可转换代码

    - name: 'Print message if CPU utilization become abnormal'
  debug:
    msg:
       - -------------------------------------------------------
       - CPU Utilization = ( 100 - idle time ) = "{{ item.stdout  }}"% is idle
       - -------------------------------------------------------
  #loop:
  with_items:
    - "{{ incidentcpuworknote_cpu }}"
    - "{{ incidentcpuworknote_cpu1 }}"
    - "{{ incidentcpuworknote_cpu2 }}"
  when: item.stdout| int <= 10
带“回路控制”的可转换代码

    - name: 'Print message if CPU utilization become abnormal'
  debug:
    msg:
       - -------------------------------------------------------
       - CPU Utilization = ( 100 - idle time ) = "{{ item.stdout  }}"% is idle
       - -------------------------------------------------------
  #loop:
  with_items:
    - "{{ incidentcpuworknote_cpu }}"
    - "{{ incidentcpuworknote_cpu1 }}"
    - "{{ incidentcpuworknote_cpu2 }}"
  when: item.stdout| int <= 10
注意:“循环控制”有助于避免在执行循环时出现不可靠的调试消息

- name: 'Print message if CPU utilization become abnormal'
  debug:
    msg:
       - -------------------------------------------------------
       - CPU Utilization = ( 100 - idle time ) = "{{ item.stdout  }}"% is idle
       - -------------------------------------------------------
  #loop:
  with_items:
    - "{{ incidentcpuworknote_cpu }}"
    - "{{ incidentcpuworknote_cpu1 }}"
    - "{{ incidentcpuworknote_cpu2 }}"
  when: item.stdout| int <= 10
  loop_control:
    label: "{{ item.stdout }}"

这看起来正是我想要的!然而,我正在努力训练如何在我的初始代码中匹配它——我似乎无法让它挑出stdout字段中的值。在上面有
stdout:bar
的地方,我改成了
-stdout:“{{kernel}}”
Hum don't,这只是我为了工作样本伪造了一个dict数组。我将在回答中添加您的具体示例修复。您可以查看编辑回答开头的“太长,未阅读”部分。非常感谢您的帮助和耐心-这正是我需要的!!我的努力已经接近尾声,但还没完全完成!:)这看起来正是我想要的!然而,我正在努力训练如何在我的初始代码中匹配它——我似乎无法让它挑出stdout字段中的值。在上面有
stdout:bar
的地方,我改成了
-stdout:“{{kernel}}”
Hum don't,这只是我为了工作样本伪造了一个dict数组。我将在回答中添加您的具体示例修复。您可以查看编辑回答开头的“太长,未阅读”部分。非常感谢您的帮助和耐心-这正是我需要的!!我的努力已经接近尾声,但还没完全完成!:)