有条件地跳过地形模块中的变量分配
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 中使用 set
、list
或 map
等类型时,如果值为用于迭代而不是参数。因此:
node_groups = var.deploy_managed_node_group ? local.node_groups : {}
将是理想的三元组,因为条件返回的假值是一个空的 map
构造函数。
我目前正在使用 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 中使用 set
、list
或 map
等类型时,如果值为用于迭代而不是参数。因此:
node_groups = var.deploy_managed_node_group ? local.node_groups : {}
将是理想的三元组,因为条件返回的假值是一个空的 map
构造函数。