Ansible任务引用字典成员时when条件恒为false问题排查
Ansible任务条件判定失效原因及修复方案
核心触发原因
Ansible的when子句默认会直接解析Jinja2表达式,不需要手动包裹{{ }}插值标记,这是官方明确规定的语法规则。你在条件中额外添加了{{ }},会导致表达式被提前求值为字符串格式的布尔值,后续Ansible二次解析时逻辑异常,最终返回非预期的false结果,导致条件匹配失败。
潜在次要问题
你提供的任务代码存在YAML缩进错误,set_fact作为和name同级的任务顶层属性,二者应该保持相同的缩进层级,缩进不规范也可能导致Ansible解析任务属性时出错。
修正后的完整任务代码
- name: "Convert distro name to number" set_fact: cacheable: yes mydict: "{{ mydict | combine({ 'distribution_number': 6}) }}" when: mydict['distribution_name'] == 'rh7'
内容的提问来源于stack exchange,提问作者TSG
相关产品推荐
相关产品推荐

