有条件地跳过地形模块中的变量分配

Conditionally skipping a variable assignment in a terraform module

我目前正在使用 terraform-aws-eks 模块并希望在现有集群中设置托管节点组。但是,我只希望这个节点组出现在我们的开发环境中(但仍然希望集群保持不变)。有没有办法有条件地跳过模块的变量赋值?我尝试了以下方法,但如果 var.deploy_managed_node_group = false 会出现错误。 Terraform 版本 0.14.11.

module "eks" {
  source = "./modules/eks-17.24.0"

  cluster_enabled_log_types = var.cluster_enabled_log_types
  cluster_name              = local.eks_cluster_name
  cluster_version           = local.eks_version
  iam_path                  = "/eks/"
  manage_aws_auth           = true
  map_users                 = local.eks_users
  map_roles                 = local.eks_roles
  subnets                   = module.eks_vpc.private_subnets

  vpc_id        = module.eks_vpc.vpc_id
  worker_groups = local.worker_groups

  node_groups = var.deploy_managed_node_group ? local.node_groups : null

}
Error: Iteration over null value

node_groups 来自模块的变量:

variable "node_groups" {
  description = "Map of map of node groups to create. See `node_groups` module's documentation for more details"
  type        = any
  default     = {}
}

在 Terraform 中使用 setlistmap 等类型时,如果值为用于迭代而不是参数。因此:

node_groups = var.deploy_managed_node_group ? local.node_groups : {}

将是理想的三元组,因为条件返回的假值是一个空的 map 构造函数。