如何从特定的ansible命令禁用json输出?

时间:2015-09-09 09:29:45

标签: ansible

一些ansible命令产生的json输出对人类来说几乎无法读取。当人们需要检查剧本是否正确执行并导致混淆时,它会分散注意力。

示例命令是shellreplace - 它们会产生大量无用的噪音。我怎么能阻止这个?简单 ok |改变了失败就足够了。我不需要整个JSON。

2 个答案:

答案 0 :(得分:25)

对要阻止所有进一步输出的任务使用no_log: True

- shell: whatever
  no_log: True

我相信唯一提及此功能的是FAQ

示例剧本:

- hosts:
  - localhost
  gather_facts: no
  vars:
    test_list:
      - a
      - b
      - c

  tasks:
    - name: Test with output
      shell: echo "{{ item }}"
      with_items: test_list

    - name: Test w/o output
      shell: echo "{{ item }}"
      no_log: True
      with_items: test_list

示例输出:

TASK: [Test with output] ****************************************************** 
changed: [localhost] => (item=a)
changed: [localhost] => (item=b)
changed: [localhost] => (item=c)

TASK: [Test w/o output] ******************************************************* 
changed: [localhost]
changed: [localhost]
changed: [localhost]

答案 1 :(得分:0)

您可以使用-o-ansible命令的一行输出(不适用于ansible-playbook):

ansible -o -m shell -a 'command' target

它将主机名,命令返回代码和命令输出放在同一行:

hostname1 | CHANGED | rc=0 | (stdout) command output
hostname2 | CHANGED | rc=0 | (stdout) command output
hostname3 | CHANGED | rc=0 | (stdout) command output