You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible azure_rm的conditional_groups中使用多条件语句

问题解答

结论

你修改后的prod_hosts条件写法无法按照预期生效,存在逻辑判断优先级错误。

错误原因

Jinja2表达式本身完全支持or逻辑运算符,但你编写的条件'prod1' or 'prod2' in name存在优先级问题:该表达式会被解析为('prod1') or ('prod2' in name),而非你预期的('prod1' in name) or ('prod2' in name)。由于非空字符串'prod1'的布尔值永远为True,因此该条件对所有主机都会返回True,最终所有虚拟机都会被划入prod_hosts分组。

正确配置

你可以选择以下任意一种正确的表达式写法替换原有条件:

  1. 完整声明两个匹配条件
conditional_groups:
  prod_hosts: "'prod1' in name or 'prod2' in name"
  uat_hosts: "'uat' in name"
  1. 使用正则匹配简化多关键词判断(适合关键词较多的场景)
conditional_groups:
  prod_hosts: "name is search('prod1|prod2')"
  uat_hosts: "'uat' in name"
  1. 使用any()函数批量判断列表内关键词
conditional_groups:
  prod_hosts: "any(keyword in name for keyword in ['prod1', 'prod2'])"
  uat_hosts: "'uat' in name"

以上三种写法均可正确匹配名称包含prod1或prod2的虚拟机,划入prod_hosts分组。

内容的提问来源于stack exchange,提问作者SafiJunaid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:39:00