Terraform EKS模块eks_managed_node_groups参数化配置报错求助
问题根源
你当前的错误是变量类型不匹配导致的:
variables.tf里未指定eks_cluster_nodegroups的类型,Terraform默认将你用HEREDOC传入的内容推断为字符串类型- 而Terraform AWS EKS模块的
eks_managed_node_groups参数要求的是**map(object)**类型,字符串无法直接转换为该类型,因此触发报错。
解决方案
1. 修正变量定义(variables.tf)
明确指定变量类型,完全匹配EKS模块对eks_managed_node_groups的参数要求:
variable "eks_cluster_nodegroups" { description = "Nodegroups of the EKS cluster" type = map(object({ min_size = number max_size = number desired_size = number instance_types = list(string) capacity_type = string # 若有其他必填字段(如subnet_ids),可按需添加 })) default = {} }
2. 修正tfvars配置(.tfvars)
直接用HCL原生的map格式赋值,抛弃HEREDOC字符串写法,同时注意Terraform要求字符串用双引号:
eks_cluster_nodegroups = { ng-1 = { min_size = 1 max_size = 2 desired_size = 1 instance_types = ["t3.small"] capacity_type = "SPOT" // 可选值为SPOT或ON_DEMAND } }
3. 保持eks.tf的引用不变
module "eks" { source = "terraform-aws-modules/eks/aws" version = "~> 18.0" # ...其他集群配置 eks_managed_node_groups = var.eks_cluster_nodegroups # ...其他集群配置 }
验证配置
执行以下命令检查配置合法性:
terraform validate
无报错后,再执行terraform plan确认资源配置符合预期。
内容的提问来源于stack exchange,提问作者Bhaumik Patel
相关产品推荐
相关产品推荐

