需要在ansible任务中隐藏失败的日志

use*_*565 6 ansible ansible-playbook

我是ansible任务的新手,正在创建一个执行登录操作的yml,如果登录失败,则需要调用一些脚本.

  - name: Logging Action
    shell: "/usr/local/bin/cqlsh -u xyzyx -p 1234abc"
    register: loginoutput
    ignore_errors: yes
    no_log: True


  - name: Run the cql script to create new user
    shell:  sh create-new-user.cql"
    when: loginoutput|failed
Run Code Online (Sandbox Code Playgroud)

对于上面的一个我创建了很好的taks.

我的问题,当执行登录操作时 - 它失败并显示如下错误消息...

我不想显示日志messgaes甚至没有任何失败的字符串在日志中.

我试过 no_log: True,这给了

失败:[127.0.0.1] => {"审查":"由于no_log参数隐藏了结果","已更改":true,"rc":1}

我不想在o/p中显示失败的字符串.

udo*_*dan 13

你不能.no_log: True是最好的,以防止输出.

如果它有帮助,旁边ignore_errors: yes有一个failed_when选项,您可以在其中准确定义使任务失败的原因.我们的想法是不要让任务首先失败.

- name: Logging Action
  shell: "/usr/local/bin/cqlsh -u xyzyx -p 1234abc"
  register: loginoutput
  failed_when: false
  no_log: True
Run Code Online (Sandbox Code Playgroud)

因此,在这种情况下,任务永远不会失败(false)但您可以提供任何可能基于任务输出的复杂条件.

现在,任务没有失败,但cqlsh仍然是返回代码1,您可以在下一个任务的条件下使用它.

- name: Run the cql script to create new user
  shell:  sh create-new-user.cql"
  when: loginoutput.rc == 1
Run Code Online (Sandbox Code Playgroud)

从理论上讲,这应该具有与以前相同的结果,只是第一项任务没有被标记为失败,因此no_log: True应该具有预期的效果.