Ansible退出代码失败

时间:2020-06-09 08:54:06

标签: ansible devops

我有类似的代码:

- name: Running ccache for {{ SOMETHING }}
  shell: "{{ item }}"
  loop:
    - command1
    - command2
    - command3
  when: stat_result.stat.exists
  failed_when: >
    (rc != 0) or
    (rc != 8)

我试图完成以下逻辑工作:

“如果命令的退出代码不是0或8,则成功。”

但是我从中得到的唯一是:

[0; 31分致命:[someIPhere]:失败! => {“ msg”:“条件检查'(rc!= 0)或(rc!= 8)'失败。错误是:评估条件((rc!= 0)或(rc!= 8)时出错):'rc'未定义“} [0m 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您需要注册一个变量以包含命令的结果。此变量将包含循环中每个项目的值,包括rc

https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#registering-variables

- name: Running ccache for {{ TENANT }}
  shell: "{{ item }}"
  loop:
    - touch /tmp/test
    - touch /tmp/test
    - touch /tmp/test
  when: stat_result.stat.exists
  register: command_result
  failed_when: command_result.rc not in [ 0, 68 ]