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

如何在Ansible中通过正则匹配从ELB DNS名称提取ELB名称

从ELB DNS名称提取ELB名称的Ansible实现

要从给定的ELB DNS名称中提取目标ELB名称,需要处理三个核心环节:移除前缀标识、截断末尾的随机数字段、将哈希部分转为大写。以下是两种可行的实现方案:

方案一:正则表达式一步完成

利用regex_replace过滤器结合正则匹配,直接定位并转换需要保留的内容:

set_fact:
  elb_dns: "internal-synergy-so-synergyin-883nxyin6e2o-278193237.us-west-2.elb.amazonaws.com."
  elb_name: "{{ elb_dns | regex_replace('^internal-(.+)-\\d+\\..*$', '\\1') | regex_replace('(-[a-z0-9]+)$', '\\U\\1') }}"
tags:
  - always

正则逻辑说明

  • ^internal-(.+)-\d+\..*$:匹配开头的internal-前缀,捕获中间到-数字.之前的所有内容,自动忽略后续域名后缀
  • \U\1:将捕获的最后一段小写哈希字符串转为大写

方案二:分步拆分处理(可读性更强)

如果觉得正则过于紧凑,可拆分为多步骤处理,逻辑更清晰:

set_fact:
  elb_dns: "internal-synergy-so-synergyin-883nxyin6e2o-278193237.us-west-2.elb.amazonaws.com."
  # 第一步:拆分DNS,提取第一个点分隔的核心前缀
  dns_core: "{{ elb_dns.split('.')[0] }}"
  # 第二步:移除开头的internal-,再去掉最后一段随机数字
  elb_base_part: "{{ dns_core | regex_replace('^internal-', '') | split('-')[:-1] | join('-') }}"
  # 第三步:提取哈希段并转大写,再拼接最终名称
  elb_hash_part: "{{ dns_core.split('-')[-2] | upper }}"
  elb_name: "{{ elb_base_part }}-{{ elb_hash_part }}"
tags:
  - always

验证结果

两种方案处理后,均可得到目标结果:synergy-so-synergyin-883NXYIN6E2O

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:01:19