如何在Terraform中移除.azurecr.io并给字符串首段追加-test?
在Terraform中实现Azure容器注册表地址的指定转换
可以通过Terraform的字符串处理函数组合来实现需求,核心用到trim_suffix和regex_replace两个函数,具体步骤和示例如下:
实现逻辑拆解
- 移除固定后缀:先用
trim_suffix函数去掉字符串末尾的.azurecr.io子串,得到前缀部分。 - 修改第一段内容:再用
regex_replace函数匹配前缀中第一个点号之前的内容,在其末尾追加-test。
示例代码
variable "acr_addresses" { type = list(string) default = [ "crdemo01.australiaeast.data.azurecr.io", "crdemo01.australiasoutheast.data.azurecr.io", "crdemo01.azurecr.io" ] } locals { transformed_acr_addresses = [ for addr in var.acr_addresses : regex_replace( trim_suffix(addr, ".azurecr.io"), "^([^.]+)", "$1-test" ) ] } output "result" { value = local.transformed_acr_addresses }
转换结果验证
执行上述代码后,输出的result会包含以下转换后的字符串:
crdemo01-test.australiaeast.datacrdemo01-test.australiasoutheast.datacrdemo01-test
函数说明
trim_suffix(str, suffix):精准移除字符串末尾指定的后缀内容,避免误删中间匹配的子串。regex_replace(str, pattern, replacement):通过正则表达式匹配目标内容,^([^.]+)表示匹配从字符串开头到第一个点号的所有字符,$1-test表示将匹配到的内容替换为“原内容-test”。
内容的提问来源于stack exchange,提问作者AnjK
相关产品推荐
相关产品推荐

