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,现在我编辑了答案,看起来更符合您的需要。