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

Ansible正则匹配变量前缀定义新变量及条件报错排查

报错根因

两个错误导致执行失败:

  • when条件处于Ansible原生Jinja2解析环境,不需要额外加{{ }}包裹表达式,添加后会触发模板解析错误。
  • 匹配关键字写错:需求是判断database/前缀,代码里写的匹配值是release/,就算语法正确也无法命中目标分支。
正确配置

判断字符串前缀用原生startswith方法比正则更简洁高效,不会出现正则转义问题:

tasks:
  - name: Extract Version Number
    ansible.builtin.set_fact:
      version: "V{{ branch.split('/')[1] }}"
    when: branch.startswith('database/')

可选正则写法

如果需要用正则实现匹配,去掉when后的双大括号即可,建议在匹配规则前加^限定匹配字符串开头,避免分支名中间包含database/时误判:

when: branch | regex_search('^database/')

执行示例命令ansible-playbook ./test.yml -e "branch=database/1.3.4"时,最终version变量会被正确赋值为V1.3.4,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:27:21