ansible命令模块结果代码不为零,表示成功响应

团队

无法捕捉到问题所在,我尝试了命令以及shell模块。 实际命令执行正常,但不确定为什么会显示stderr?

任务

#include <stdio.h>

printf("Hello %s\n",name);

输出


      - name: "List out PROC Stats on DGX/GPU Nodes Nodes"
        shell: "cat {{ proc_stats }} | grep FS"
        ignore_errors: no
        register: proc_stats
        delegate_to: "{{ item }}"
        with_items: "{{ groups['gpu_node'] }}"
        failed_when: proc_stats.rc != 0

t572786188 回答:ansible命令模块结果代码不为零,表示成功响应

首先,您的输出与command模块的使用相匹配,当尝试通过管道输出命令时,它的确会失败。解决方案是使用shell模块。我可以在您的问题中看到这一点,因此我只能假设您获取了错误的输出。

使用shell模块时将看到的问题是,您正在将任务的结果分配给与shell命令(proc_stats)输入相同的变量。您需要为注册的输出使用其他变量名称。

顺便说一下,failed_when条件是不必要的。如果命令的返回码不是0

,则该任务将失败。 ,

使用shell时,应始终使用bash严格模式,该模式还会设置pipefail标志。

设置-euxo pipefail

如果您在代码上运行ansible-lint,则可以发现它,因为它发现了这个常见错误。

本文链接:https://www.f2er.com/3155630.html

大家都在问