获取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不存在时才会出现问题