Variables 如何将地图块映射转换为Terraform中的变量
我正在使用TerraformAWS eks模块部署eks集群。我希望能得到一些帮助,将地图的节点组映射转换成一个变量,这样我就可以为不同的环境修改变量文件。这是地图地图:Variables 如何将地图块映射转换为Terraform中的变量,variables,terraform,terraform-provider-aws,Variables,Terraform,Terraform Provider Aws,我正在使用TerraformAWS eks模块部署eks集群。我希望能得到一些帮助,将地图的节点组映射转换成一个变量,这样我就可以为不同的环境修改变量文件。这是地图地图: node_groups = { example = { desired_capacity = 1 max_capacity = 10 min_capacity = 1 instance_types = ["m5.large"]
node_groups = {
example = {
desired_capacity = 1
max_capacity = 10
min_capacity = 1
instance_types = ["m5.large"]
capacity_type = "ON_DEMAND"
k8s_labels = {
Environment = "test"
GithubRepo = "terraform-aws-eks"
GithubOrg = "terraform-aws-modules"
}
additional_tags = {
ExtraTag = "example"
}
}
}
我希望能够引用一个变量,而不是main.tf中的映射
node_groups = var.node_groups
我正在努力处理variables.tf中不同级别的列表(对象)。提前感谢您的帮助。我想您是在问,对于接受这样的数据结构的变量,什么可能是合适的。如果是这样,这里有一个尝试:
type = map(object({
desired_capacity = number
max_capacity = number
min_capacity = number
instance_types = set(string)
capacity_type = string
k8s_labels = map(string)
additional_tags = map(string)
}))
我在这里猜测了你的意图:
- 我将
设置为一组字符串,而不是一个字符串列表,因为实例类型的排序通常没有意义,而集合是无序集合的适当数据结构。但是,如果您打算使用实例类型设置的顺序,那么您可以将其改为instance\u types
list(string)
- 对于
和k8s_标签
,它们似乎只是调用者选择的任意键/值对,而不是模块指定的特定数据结构,因此我将它们约束为附加_标签
而不是作为一种特定的对象类型,涵盖您在示例中显示的确切属性名称。如果您打算在映射(字符串)
中准确地要求k8s_标签
、Environment
和GithubRepo
属性,而不是让调用方来决定,那么您可以将其更改为对象类型而不是映射类型GithubOrg