可注册变量



我正在使用ansible并使用条件语句实现一些任务。我运行task1,如果task1得到ok,然后运行task2,如果task2得到ok,然后运行task3。我的角色是这样的:

- name: task1
command: command1
register: result1
- name: task2
command: command2
when:
- result1.stdout is search("OK")
register: result2
- name: task3
command: command3
when:
- result2 is defined
- result2.stdout is search("OK")

正如你所看到的,task2只有在我从result1.stdout得到OK时才运行。问题是当task2不运行时,我在task3中得到错误:

"条件检查'(result2。stdout是搜索("OK"))失败。他的错误是:计算条件(结果)时出错。stdout是search("OK")): 'dict object'没有属性'stdout'"

我怎样才能改变这个,这样我就不会得到这个错误?

使用默认过滤器

- name: task3
command: command3
when: result2 is defined and 
result2.stdout | default("") is search("OK")

在使用默认过滤器

之后,不需要定义条件默认过滤器文档

编辑这个就可以了:)

- name: task3
command: command3
when: '"OK" in result2.stdout | default("")'

最新更新