gpt4 book ai didi

ansible - ansible playbook 任务中 shell 命令执行失败时如何仅打印 stderr_lines

转载 作者:行者123 更新时间:2023-12-05 08:51:59 27 4
gpt4 key购买 nike

在我的 ansible 剧本中,我有一个执行 shell 命令的任务。该命令的参数之一是密码。当 shell 命令失败时,ansible 会打印包含具有密码的命令的整个 json 对象。如果我使用 no_log: True,那么我会得到经过审查的输出,并且无法获得 stderr_lines。有没有办法自定义shell命令执行失败时的输出?

最佳答案

您可以利用 ansible blocks及其错误处理功能。

这是一个示例剧本

---
- name: Block demo for shell
hosts: localhost
gather_facts: false

tasks:

- block:

- name: my command
shell: my_command is bad
register: cmdresult
no_log: true

rescue:

- name: show error
debug:
msg: "{{ cmdresult.stderr }}"

- name: fail the playbook
fail:
msg: Error on command. See debug of stderr above

结果如下:

PLAY [Block demo for shell] *********************************************************************************************************************************************************************************************************************************************

TASK [my command] *******************************************************************************************************************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result", "changed": true}

TASK [show error] *******************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": "/bin/sh: 1: my_command: not found"
}

TASK [fail the playbook] ************************************************************************************************************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "Error on command. See debug of stderr above"}

PLAY RECAP **************************************************************************************************************************************************************************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=1 ignored=0

关于ansible - ansible playbook 任务中 shell 命令执行失败时如何仅打印 stderr_lines,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57920611/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com