在Terraform中,如何定义对象列表



在Terraform中,我们如何定义对象列表?

变量.tf

variable "aws_cluster_arn" {
type = string

}
variable "aws_ecs_placement_strategy" {
type = list(object)
}

配置中。tfvars

aws_ecs_placement_strategy=(object({type="spread",field="attribute:ecs.availability-zone"}),object({type="BinPack",field="CPU"}))

我得到以下错误:

错误:类型规范无效

在变量.tf行53上;aws_ecs_placement_strategy":
53:type=列表(对象(

定义object类型时,应指定object的所有字段及其类型,如下所示:

variable "aws_ecs_placement_strategy" {
type = list(object({
type = string,
field = string
}))
}

人们通常希望能够在Terraform中将自定义对象列表定义为变量,这比你想象的更简单。

它可以简单地定义如下:

variable "var_name" {
val_a = string
val_list = list(object({
list_val_1 = string
list_val_2 = number
}))
}

通过这种方式,您可以定义一个变量值列表,这些值可以通过迭代来动态生成资源。当与"动态"块配对时,它将成为一个强大的工具。它可以如下使用,假设我们按照上面的例子定义了一个变量列表:

dynamic "resource_name" {
for_each = var.var_name.val_list
content = {
val_1 = resource_name.value.list_val_1
val_2 = resource_name.value.list_val_2
}
}

遵循这种模式可以使Terraform代码更加模块化和可重用,允许跨多个用例的动态定义。

相关内容

  • 没有找到相关文章