ansible shell non-zero return code 隐藏错误信息

在使用 ansible 的 shell 模块时,可能会碰到 non-zero return code ,这时 task 会 failed,但是需要该任务不为 failed。
此时可以在 shell 命令末尾增加 cat,将返回的内容通过管道传递给 cat,使用 cat 返回的 rc 始终为 0,而且也能捕获到原始输出进行判断。

实际应用
目前有如下需求:
往 pacemaker 的集群里面添加资源时,如果资源已经存在,命令返回值非 0,但是需要该任务正常通过执行。

添加重复资源的报错信息,可看到 strerr 中提示资源已存在:

failed: [test1 -> test1] (item=test-com1) => 
{
    "ansible_loop_var": "item", 
    "changed": true, 
    "cmd": ["docker", "exec", "masakari_hostmonitor", "pcs", "resource", "create", "test-compute101", "ocf:pacemaker:remote", "reconnect_interval=60"], 
    "delta": "0:00:01.462636", 
    "end": "2020-12-08 11:39:52.689518", 
    "item": "test-com1", 
    "msg": "non-zero return code", 
    "rc": 1, 
    "start": "2020-12-08 11:39:51.226882", 
    "stderr": "Error: 'test-com1' already exists", 
    "stderr_lines": ["Error: 'test-com1' already exists"], 
    "stdout": "Warning: this command is not sufficient for creating a remote connection, use 'pcs cluster node add-remote'", 
    "stdout_lines": ["Warning: this command is not sufficient for creating a remote connection, use 'pcs cluster node add-remote'"]
}

给 shell 命令后添加 cat ,最终 task 示例:

---
- name: Register pacemaker_remote node
  vars:
    service: "{{ masakari_services['masakari-pacemaker-remote'] }}"
  become: true
  shell: >
    docker exec masakari_hostmonitor
    pcs resource create {{ item }} ocf:pacemaker:remote reconnect_interval=60 | cat
  run_once: True
  delegate_to: "{{ groups['masakari-api'][0] }}"
  with_items: "{{ groups['masakari-monitors'] }}"
  # 将执行结果注册到 result
  register: result
  # 若 result 中存在 exists 字符串,认为命令正常执行,状态置为 changed
  # 这样不会引起 task failed
  changed_when: "'exists' in result.stderr"
  when:
    - service.enabled | bool
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
非零返回代码(non-zero return code)是指在执行某个命令或程序时,该命令或程序返回了一个非零的返回值。这通常表示执行过程中发生了错误或异常情况。根据引用,如果你在执行命令"/bin/sh: ifconfig"时遇到"command not found"的报错和非零返回代码,这可能是因为系统中没有安装ifconfig命令,或者该命令的路径没有正确设置。你可以尝试检查命令是否正确安装,并确保执行命令时的路径设置正确。 根据引用,在某些情况下,非零返回代码可能与进程间的通信问题有关。例如,当你在使用kill命令终止一个进程时,如果同时终止了与该进程相关的其他进程,可能会导致非零返回代码的错误。这可能是因为管理端的进程无法接收到远端进程的正确回复。你可以尝试检查与进程通信相关的设置,并确保进程之间的关联性得到正确维护。 根据引用,有些情况下,非零返回代码可能是由于特定的编程指令或代码区域导致的。例如,在RTM或HLE代码区域内部执行的指令可能会返回非零返回代码,而在其他情况下则返回零。这取决于具体的编程语言、环境和代码逻辑。你可以尝试检查代码中的相关指令或代码区域,并确保其正确性和逻辑性。 总之,非零返回代码通常表示执行过程中出现了错误、异常或通信问题。你可以通过检查命令/程序的正确安装、路径设置以及进程间通信等方面来解决非零返回代码的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ansible:command not foundnon-zero return code 解决方法](https://blog.csdn.net/qq_39418469/article/details/131122904)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Ansible non-zero return code 错误(ps -ef kill)](https://blog.csdn.net/renchenglin118/article/details/127301727)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [arm-asm.rar_return](https://download.csdn.net/download/weixin_42657024/86665105)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

某呆啊

赏个糖吃吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值