我对 Ansible 剧本中的“when”语句有疑问。这是任务:
- name: Testing port 80 - 443 - 8443 on server_x
wait_for: host=server_x port={{item}} timeout=1
with_items:
- 80
- 443
- 8443
when: (sg_building == "TIGERY" and sg_marley_environment == "DEV" and sg_building is defined and sg_marley_environment is defined) or (specified_building == "TIGERY" and specified_environment == "DEV" and specified_building is defined and specified_environment is defined)
sg_building和sg_marley_inventory在动态库存中定义。
specified_inventory和specified_environment是用 extra-vars 定义的(-e 和 ansible-playbook 命令)
when 语句的第一部分工作正常(“或”之前的所有内容),但是第二部分被跳过了(我尝试切换位置并确认了这一点)
你知道为什么“或”没有按预期工作吗?
谢谢你的帮助 !
避免is defined
在复杂的表达式中,因为它实际上不是 Jinja2 测试,而是未定义错误的捕获。
阅读此评论了解详情。
你可能有更多的运气:
when: (sg_building | default('') == "TIGERY" and sg_marley_environment | default('') == "DEV") or (specified_building | default('') == "TIGERY" and specified_environment | default('') == "DEV")
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句