Ansible:模拟"传递时间"模块

fgy*_*ica 4 error-handling module ansible

Ansible提供了一个failed_when模块,允许用户在其任务上指定某些失败条件,例如在stdout或stderr中找到某个字符串.

我试图做相反的事情:如果在stdout或stderr中找到任何一组字符串,我希望我的任务不会失败.换句话说,我想要一些接近passed_when模块功能的东西.

  • 当返回码为0时,我仍然希望它正常传递.
  • 但是如果它会失败(rc!= 0)那么它应该首先检查一些字符串的出现.
  • 即如果找到一些字符串,它无论如何都会通过.

我的理由是这样的:

任务可能失败的原因有很多 - 但其中一些原因,取决于输出,我不认为是当前环境中的失败.

有没有人知道如何实现这一目标?

Pro*_*e85 9

看看这里:

是否有一些Ansible相当于"failed_when"的成功

- name: ping pong redis
  command: redis-cli ping
  register: command_result
  failed_when: 
    - "'PONG' not in command_result.stderr"
    - "command_result.rc != 0"
Run Code Online (Sandbox Code Playgroud)
  • 如果返回代码为0并且stderr中没有"PONG",则不会失败.
  • 如果stderr中有"PONG",则不会失败.

因此,如果任何列表为False则传递

  • 不,那是我写到所引用票证中的内容(只需看一下我与mp dehaan的邮件对话)。从语义上来说很奇怪...如果command_result.rc!= 0并且command_result.stderr中没有“ PONG”,它将失败 (2认同)