Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 如何将地图块映射转换为Terraform中的变量_Variables_Terraform_Terraform Provider Aws - Fatal编程技术网

Variables 如何将地图块映射转换为Terraform中的变量

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"]

我正在使用TerraformAWS eks模块部署eks集群。我希望能得到一些帮助,将地图的节点组映射转换成一个变量,这样我就可以为不同的环境修改变量文件。这是地图地图:

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
    属性,而不是让调用方来决定,那么您可以将其更改为对象类型而不是映射类型
“我在挣扎”并不具体。你到底试过什么,犯了什么错误?