Terraform 基于变量生成字符串列表
假设我有一些地形变量:Terraform 基于变量生成字符串列表,terraform,Terraform,假设我有一些地形变量:变量“cluster”{}和变量“kfkcount”{} 假设cluster=test和kfkcount=3 如何使用terraform将其转换为如下所示的列表 [“test1.c.com”、“test2.c.com”、“test3.c.com”]编辑 有一点可以帮助您,那就是使用循环,并使用count.index作为名称的值。 所以你可能会得到这样的结果: resource ".." "..." { count = "${var.kfkcount}" somet
变量“cluster”{}
和变量“kfkcount”{}
假设cluster=test
和kfkcount=3
如何使用terraform将其转换为如下所示的列表
[“test1.c.com”、“test2.c.com”、“test3.c.com”]
编辑
有一点可以帮助您,那就是使用循环,并使用count.index
作为名称的值。
所以你可能会得到这样的结果:
resource ".." "..." {
count = "${var.kfkcount}"
something = "${var.cluster}${count.index}.c.com"
}
甚至还有一个例子显示了count的简单用法,以及使用*
进行列表扩展
您是否尝试过使用页面中描述的
列表(项目,…)
类似于
“${list(${var.cluster},“${var.kfkcount}”)}”
这应该满足您的要求:
variable "cluster" {}
variable "kfkcount" {}
data "template_file" "test" {
template = "$${cluster}$${index}.c.com"
count = "${var.kfkcount}"
vars = {
index = "${count.index + 1}"
cluster = "${var.cluster}"
}
}
output "list" {
value = "${data.template_file.test.*.rendered}"
}
使用template\u文件
资源有点麻烦,但是它会根据需要返回列表:
$ terraform apply
var.cluster
Enter a value: test
var.kfkcount
Enter a value: 3
data.template_file.test[0]: Refreshing state...
data.template_file.test[1]: Refreshing state...
data.template_file.test[2]: Refreshing state...
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
Outputs:
list = [
test1.c.com,
test2.c.com,
test3.c.com
]
这将返回
[“test”,3]
,并且可能会出错,因为列表包含不同的类型。不过,我想不出一个在Terraform中重复字符串的好方法,因为在将字符串转换为列表之前,您不能像“${var.cluster*var.kfkcount}”
那样重复字符串3次。不确定这是否可行。@user2061886,现在我编辑了答案,看起来更符合您的需要。