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

Ansible任务when条件配置报错:正则语法错误及需求实现求助

问题解决:Ansible条件判断正则语法错误

报错原因

你写的regex_search("*app02")存在正则语法错误:正则表达式中*是重复量词,必须跟在具体字符/表达式后面(比如a*表示匹配0个或多个a),直接以*开头会让正则引擎无法解析,导致"nothing to repeat"错误。

两种可行解决方案

你的需求是判断字符串是否包含"app02",可以用以下两种方式实现:

方案1:修复正则表达式

直接用目标子串作为正则匹配项(regex_search默认会查找字符串中任意位置的子串),也可以明确写出通配符(.匹配任意字符,*表示匹配0次或多次):

- name: Performing managed server 
  shell: "cd {{ dest }}; {{ dest }}/script_app.sh {{ src_pwd }} {{ src_wls }}"
  when:
    - target_clone in ['003', '004']  # 简化写法,功能与原条件一致
    - tgt_secondary_servers | regex_search("app02")  # 直接匹配子串
    # 或者写成更明确的通配形式:
    # - tgt_secondary_servers | regex_search(".*app02.*")

方案2:用字符串包含判断(更直观)

不需要正则,直接用Ansible的in操作符判断字符串包含关系,代码更易读:

- name: Performing managed server 
  shell: "cd {{ dest }}; {{ dest }}/script_app.sh {{ src_pwd }} {{ src_wls }}"
  when:
    - target_clone in ['003', '004']
    - 'app02' in tgt_secondary_servers

补充说明

  • 你的变量定义部分无需修改,保持原样即可:
vars:
  src_wls: "{{ source_database.src_wls_password }}"
  src_pwd: "{{ source_database.src_password }}"
  tgt_secondary_servers: "{{ inventory_hostname }}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:30:39