使用条件无法使用

时间:2015-04-09 18:26:24

标签: vagrant ansible

我有一个仅在运行vagrant时定义的var:

is_vagrant: yes

当我运行其他playbook时,它没有定义为var不包括在内。

当我做ansible时:

when: is_vagrant is defined

当它被定义或未定义时,它就像一个魅力。

但是当我使用这样的东西时:

when: gitclone.changed or is_vagrant is defined

即使包含is_vagrant var,它也只是跳过任务。我不确定为什么?

1 个答案:

答案 0 :(得分:1)

当涉及到变量扩展时,我放弃了信任ansible来做正确的事情。因此,即使ansible试图误导我的消息,例如" 您也不需要使用{{}}"" ",我仍然会这样做

你有没有尝试过:

when: "{{ gitclone.changed or is_vagrant is defined }}"

- 编辑 -

when: "{{ is_vagrant is defined or ( gitclone is defined and gitclone.changed ) }}"
  

为什么我要检查已定义的。我认为.changed是真还是假?

如果您希望任务失败'如果没有定义变量,那么您不必检查它是否已定义。但是,如果您不想要UndefinedError: 'git_output'错误,那么您需要检查。

changed位于git_output内,因此如果git_output未定义,则git_output.changed未定义{{1}}。