是否有逻辑推理可以解释为什么debug下面的 Ansible 剧本中的两个任务分别输出"NONE"和"FALSE"而不是两者都输出"NONE"?
- hosts: 'all'
tasks:
- debug:
msg: '{{ foo | default( None ) | ternary( "TRUE", "FALSE", "NONE" ) }}'
- debug:
msg: '{{ bar | ternary( "TRUE", "FALSE", "NONE" ) }}'
vars:
bar: '{{ foo | default( None ) }}'
Run Code Online (Sandbox Code Playgroud)
ansible@2.8.5顺便说一句,我观察到了这一点
[编辑@2019-10-16]
从 @VladimirBotka 的回答推断,人们可以说真正的“问题”是相None对于替换而言不具有传递性。我的使用default(...)不必要地使事情复杂化,该示例可以简化为:
- hosts: 'all'
tasks:
- debug:
msg: '{{ None | ternary( "TRUE", "FALSE", "NONE" ) }}'
- debug: …Run Code Online (Sandbox Code Playgroud)