我正在尝试在terraform中应用正则表达式。
variable "version" {
type = "string"
default = https://s3-us-east-1.amazonaws.com/bucket/folder/item-v1.2/item-item2-v1.2.gz
description = "version"
}
name = "${replace(var.version, "//", "")}"
我只需要替换所有内容,只输出"v1.2"的名称,特别是从item-v1.2
文件路径。我在考虑做一些类似
name = "${replace(var.version, "//", "")}"
我替换了除v1.2之外的所有内容。
你知道怎么做吗?提前感谢!
您的变量定义有几个问题(例如错误使用引号,变量名称"版本"由于其在模块块中的特殊含义而保留,等等),因此我对以下内容进行操作:
variable "my_version" {
type = string
default = "https://s3-us-east-1.amazonaws.com/bucket/folder/item-v1.2/item-item2-v1.2.gz"
description = "version"
}
然后你可以像这样从子文件夹路径中提取版本(或者替换除了所要求的版本之外的所有其他内容)(这已经在terraform console
中运行和测试过):
$ terraform console
> var.my_version
"https://s3-us-east-1.amazonaws.com/bucket/folder/item-v1.2/item-item2-v1.2.gz"
> regex(".*-(.*)/.*.gz", var.my_version)[0]
"v1.2"
> replace(var.my_version, "/.*-(.*)/.*.gz/", "<before> $1 <after>")
"<before> v1.2 <after>"