获取Ansible中when条件的错误

获取Ansible中when条件的错误,ansible,Ansible,我有这个 dry_run: "{{ lookup('env','DRY_RUN') | default(yes,true) }}" 我得到了这个错误 我用的是like when: dry_run 致命:[localhost]:失败!=>{“failed”:true,“msg”:“The 条件检查“dry_run”失败。错误为:错误为 正在计算条件(干运行):“是”未定义\n\n错误 似乎在 我甚至试过 when:dry_run | bool以及 错误为:计算条件时出错(干运行| bool):

我有这个

dry_run: "{{ lookup('env','DRY_RUN') | default(yes,true) }}"
我得到了这个错误

我用的是like

when: dry_run
致命:[localhost]:失败!=>{“failed”:true,“msg”:“The 条件检查“dry_run”失败。错误为:错误为 正在计算条件(干运行):“是”未定义\n\n错误 似乎在

我甚至试过

when:dry_run | bool
以及

错误为:计算条件时出错(干运行| bool):{{ 查找('env','DRY_RUN')|默认值(yes,true)}:'yes'是 未定义\n\n该错误似乎已被忽略

使用
default(true)
而不是
default(yes)
(它是一个Jinja2模板,不是YAML,因此
yes
不是
true
的同义词)并设置一个事实,以便在条件中不使用模板:

- set_fact:
    dry_run: "{{ lookup('env','DRY_RUN') | default(true, true) }}"

- debug:
  when: dry_run

什么是事实还是变量?@techraf它的变量为什么我需要设置为事实,为什么我不能使用变量。我在答案中写道。Ansible会抱怨,因为你的变量包含一个模板。但我还有15个变量,我就是这样使用的。我在所有地方都使用了它们。我使用的例子是
rtype:“{lookup('env','RTYPE')| default('C12',true)}}“
在playbook中,我在['C1']中使用了
when:RTYPE[:2]时,这一切都很好,没有任何问题`我认为这是可行的,因为我有env变量,只有当env不存在时才会出现问题