Ansible 复杂 when 语句 - 它的一部分未被评估

米萨

我对 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_buildingsg_marley_inventory在动态库存中定义。

specified_inventoryspecified_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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

重用Drools`when`语句的一部分

JavaScript-仅评估if语句的第一部分

Ansible - When 语句使用变量

使用变量作为语句的一部分

Ansible:理解复合条件的when语句

Ansible 对循环中的项目执行 when 语句

JavaScript复杂的一线if语句

Typescript:require语句不是import语句的一部分

MySQL-WHERE语句仅适用于SELECT语句的一部分

如何在 mysql 中执行 IF 语句作为 SELECT 语句的一部分

使用unittest和嘲笑来测试复杂结构的一部分

如何提取SQL语句的一部分以进行搜索和替换?

SQL语句删除列上的一部分URL

如何在子查询中使用HAVING作为Select语句的一部分

从if语句的第一部分返回后,否则

选择选项数组作为select语句的一部分

返回Int的函数如何成为if语句的一部分?

如何动态构造/更改LINQ语句的一部分

SQL - 试图判断查询的哪一部分与“OR”语句匹配

函数未执行(逻辑语句的一部分)

如何返回记录数作为select语句的一部分?

php if语句作为ajax调用的一部分没有失败

if语句仅可读取txt文件的最后一部分

如何使条件If语句在Python中只必须满足其条件的一部分?

尚未设置Ajax POST,但仍会激活php if语句的一部分

Laravel-将函数的一部分转换为排队的语句

将VARCHAR转换为SMALLDATETIME作为UPDATE语句的一部分

如何使用IF语句(如果遇到)继续执行Powershell脚本的一部分

C#如何检查if语句的哪一部分正确