Loading...
Loading...
### Terraform Version ```shell Terraform v1.10.3 on darwin_arm64 ``` ### Terraform Configuration Files ```terraform variable "enable_auto_scaling" { default = null type = bool } variable "node_pool_node_count" { default = null type = number } variable "worker_nodepool_names" { default = [ "greenz1", "greenz2", "bluez1", "bluez2" ] nullable = false type = set(string) } variable "worker_nodepool_config_overrides" { default = null type = map(object({ enable_auto_scaling = optional(bool) kubernetes_version = optional(string) max_count = optional(number) min_count = optional(number) node_count = optional(number) os_disk_gb = optional(number) os_sku = optional(string) vm_sku = optional(string) zones = optional(set(number)) })) } locals { enable_auto_scaling = { for key in var.worker_nodepool_names : key => try(var.worker_nodepool_config_overrides[key].enable_auto_scaling, var.enable_auto_scaling) } worker_nodepool_configs = { for key in var.worker_nodepool_names : key => { node_count = !coalesce(local.enable_auto_scaling[key], false) ? coalesce(try(var.worker_nodepool_config_overrides[key].node_count), var.node_pool_node_count) : null } } } ``` terraform.tfvars: ```terraform enable_auto_scaling = true worker_nodepool_names = [ "bluez1", "bluez2", "greenz1", "greenz2" ] worker_nodepool_config_overrides = { bluez1 = { zones = [1] } bluez2 = { zones = [2] } greenz1 = { zones = [1] } greenz2 = { zones = [2] } } ``` ### Debug Output ``` ❯ TF_LOG=TRACE terraform console 2025-05-15T20:02:58.654-0500 [INFO] Terraform version: 1.10.3 2025-05-15T20:02:58.654-0500 [DEBUG] using github.com/hashicorp/go-tfe v1.70.0 2025-05-15T20:02:58.654-0500 [DEBUG] using github.com/hashicorp/hcl/v2 v2.23.0 2025-05-15T20:02:58.654-0500 [DEBUG] using github.com/hashicorp/terraform-svchost v0.1.1 2025-05-15T20:02:58.654-0500 [DEBUG] using github.com/zclconf/go-cty v1.15.1-0.20241111215639-63279be090d7 2025-05-15T20:02:58.654-0500 [INFO] Go runtime version: go1.23.3 2025-05-15T20:02:58.654-0500 [INFO] CLI args: []string{"/Users/tom.spear/.asdf/installs/terraform/1.10.3/bin/terraform", "console"} 2025-05-15T20:02:58.654-0500 [TRACE] Stdout is a terminal of width 187 2025-05-15T20:02:58.654-0500 [TRACE] Stderr is a terminal of width 187 2025-05-15T20:02:58.654-0500 [TRACE] Stdin is a terminal 2025-05-15T20:02:58.654-0500 [DEBUG] Attempting to open CLI config file: /Users/tom.spear/.terraformrc 2025-05-15T20:02:58.654-0500 [DEBUG] File doesn't exist, but doesn't need to. Ignoring. 2025-05-15T20:02:58.655-0500 [DEBUG] ignoring non-existing provider search directory terraform.d/plugins 2025-05-15T20:02:58.655-0500 [DEBUG] ignoring non-existing provider search directory /Users/tom.spear/.terraform.d/plugins 2025-05-15T20:02:58.655-0500 [DEBUG] ignoring non-existing provider search directory /Users/tom.spear/Library/Application Support/io.terraform/plugins 2025-05-15T20:02:58.655-0500 [DEBUG] ignoring non-existing provider search directory /Library/Application Support/io.terraform/plugins 2025-05-15T20:02:58.655-0500 [INFO] CLI command args: []string{"console"} 2025-05-15T20:02:58.655-0500 [TRACE] Meta.Backend: no config given or present on disk, so returning nil config 2025-05-15T20:02:58.655-0500 [TRACE] Meta.Backend: backend has not previously been initialized in this working directory 2025-05-15T20:02:58.655-0500 [TRACE] Meta.Backend: using default local state only (no backend configuration, and no existing initialized backend) 2025-05-15T20:02:58.655-0500 [TRACE] Meta.Backend: instantiated backend of type 2025-05-15T20:02:58.656-0500 [DEBUG] checking for provisioner in "." 2025-05-15T20:02:58.656-0500 [DEBUG] checking for provisioner in "/Users/tom.spear/.asdf/installs/terraform/1.10.3/bin" 2025-05-15T20:02:58.656-0500 [TRACE] Meta.Backend: backend does not support operations, so wrapping it in a local backend 2025-05-15T20:02:58.656-0500 [TRACE] backend/local: CLI option -state is overriding state path to terraform.tfstate 2025-05-15T20:02:58.656-0500 [TRACE] backend/local: requesting state manager for workspace "default" 2025-05-15T20:02:58.656-0500 [TRACE] backend/local: state manager for workspace "default" will: - read initial snapshot from terraform.tfstate - write new snapshots to terraform.tfstate - create any backup at terraform.tfstate.backup 2025-05-15T20:02:58.656-0500 [TRACE] backend/local: requesting state lock for workspace "default" 2025-05-15T20:02:58.657-0500 [TRACE] statemgr.Filesystem: preparing to manage state snapshots at terraform.tfstate 2025-05-15T20:02:58.658-0500 [TRACE] statemgr.Filesystem: no previously-stored snapshot exists 2025-05-15T20:02:58.658-0500 [TRACE] statemgr.Filesystem: locking terraform.tfstate using fcntl flock 2025-05-15T20:02:58.658-0500 [TRACE] statemgr.Filesystem: writing lock metadata to .terraform.tfstate.lock.info 2025-05-15T20:02:58.658-0500 [TRACE] backend/local: reading remote state for workspace "default" 2025-05-15T20:02:58.658-0500 [TRACE] statemgr.Filesystem: reading latest snapshot from terraform.tfstate 2025-05-15T20:02:58.658-0500 [TRACE] statemgr.Filesystem: snapshot file has nil snapshot, but that's okay 2025-05-15T20:02:58.658-0500 [TRACE] statemgr.Filesystem: read nil snapshot 2025-05-15T20:02:58.658-0500 [TRACE] backend/local: populating backendrun.LocalRun for current working directory 2025-05-15T20:02:58.658-0500 [TRACE] terraform.NewContext: starting 2025-05-15T20:02:58.658-0500 [TRACE] terraform.NewContext: complete 2025-05-15T20:02:58.658-0500 [DEBUG] Building and walking 'eval' graph 2025-05-15T20:02:58.658-0500 [TRACE] Executing graph transform *terraform.ConfigTransformer 2025-05-15T20:02:58.658-0500 [TRACE] ConfigTransformer: Starting for path: 2025-05-15T20:02:58.658-0500 [TRACE] Completed graph transform *terraform.ConfigTransformer (no changes) 2025-05-15T20:02:58.658-0500 [TRACE] Executing graph transform *terraform.RootVariableTransformer 2025-05-15T20:02:58.658-0500 [TRACE] Completed graph transform *terraform.RootVariableTransformer with new graph: var.enable_auto_scaling - *terraform.NodeRootVariable var.node_pool_node_count - *terraform.NodeRootVariable var.worker_nodepool_config_overrides - *terraform.NodeRootVariable var.worker_nodepool_names - *terraform.NodeRootVariable ------ 2025-05-15T20:02:58.658-0500 [TRACE] Executing graph transform *terraform.ModuleVariableTransformer 2025-05-15T20:02:58.658-0500 [TRACE] Completed graph transform *terraform.ModuleVariableTransformer (no changes) 2025-05-15T20:02:58.658-0500 [TRACE] Executing graph transform *terraform.variableValidationTransformer 2025-05-15T20:02:58.658-0500 [TRACE] variableValidationTransformer: adding validation nodes for any existing variable evaluation nodes 2025-05-15T20:02:58.658-0500 [TRACE] variableValidationTransformer: var.enable_auto_scaling has no validation rules 2025-05-15T20:02:58.658-0500 [TRACE] variableValidationTransformer: var.node_pool_node_count has no validation rules 2025-05-15T20:02:58.658-0500 [TRACE] variableValidationTransformer: var.worker_nodepool_names has no validation rules 2025-05-15T20:02:58.658-0500 [TRACE] variableValidationTransformer: var.worker_nodepool_config_overrides has no validation rules 2025-05-15T20:02:58.658-0500 [TRACE] Completed graph transform *terraform.variableValidationTransformer (no changes) 2025-05-15T20:02:58.658-0500 [TRACE] Executing graph transform *terraform.LocalTransformer 2025-05-15T20:02:58.658-0500 [TRACE] Completed graph transform *terraform.LocalTransformer with new graph: local.enable_auto_scaling (expand) - *terraform.nodeExpandLocal local.worker_nodepool_configs (expand) - *terraform.nodeExpandLocal var.enable_auto_scaling - *terraform.NodeRootVariable var.node_pool_node_count - *terraform.NodeRootVariable var.worker_nodepool_config_overrides - *terraform.NodeRootVariable var.worker_nodepool_names - *terraform.NodeRootVariable ------ 2025-05-15T20:02:58.658-0500 [TRACE] Executing graph transform *terraform.OutputTransformer 2025-05-15T20:02:58.658-0500 [TRACE] Completed graph transform *terraform.OutputTransformer (no changes) 2025-05-15T20:02:58.658-0500 [TRACE] Executing graph transform *terraform.AttachResourceConfigTransformer 2025-05-15T20:02:58.658-0500 [TRACE] Completed graph transform *terraform.AttachResourceConfigTransformer (no changes) 2025-05-15T20:02:58.658-0500 [TRACE] Executing graph transform *terraform.AttachStateTransformer 2025-05-15T20:02:58.658-0500 [DEBUG] Not attaching any node states: overall state is nil 2025-05-15T20:02:58.658-0500 [TRACE] Completed graph transform *terraform.AttachStateTransformer (no changes) 2025-05-15T20:02:58.658-0500 [TRACE] Executing graph transform *terraform.graphTransformerMulti 2025-05-15T20:02:58.658-0500 [TRACE] (graphTransformerMulti) Executing graph transform *terraform.externalProviderTransformer 2025-05-15T20:02:58.658-0500 [TRACE] (graphTransformerMulti) Completed graph transform *terraform.externalProviderTransformer with new graph: local.enable_auto_scaling (expand) - *terraform.nodeExpandLocal local.worker_nodepool_configs (expand) - *terraform.nodeExpandLocal var.enable_auto_scaling - *terraform.NodeRootVariable var.node_pool_node_count - *terraform.NodeRootVariable var.worker_nodepool_config_overrides - *terraform.NodeRootVariable var.worker_nodepool_names - *terraform.NodeRootVariable ------ 2025-05-15T20:02:58.658-0500 [TRACE] (graphTransformerMulti) Executing graph transform *terraform.ProviderConfigTransformer 2025-05-15T20:02:58.658-0500 [TRACE] (graphTransformerMulti) Completed graph transform *terraform.ProviderConfigTransformer (no changes) 2025-05-15T20:02:58.658-0500 [TRACE] (graphTransformerMulti) Executing graph transform *terraform.MissingProviderTransformer 2025-05-15T20:02:58.658-0500 [TRACE] (graphTransformerMulti) Completed graph transform *terraform.MissingProviderTransformer (no changes) 2025-05-15T20:02:58.658-0500 [TRACE] (graphTransformerMulti) Executing graph transform *terraform.ProviderTransformer 2025-05-15T20:02:58.658-0500 [TRACE] (graphTransformerMulti) Completed graph transform *terraform.ProviderTransformer (no changes) 2025-05-15T20:02:58.658-0500 [TRACE] (graphTransformerMulti) Executing graph transform *terraform.PruneProviderTransformer 2025-05-15T20:02:58.658-0500 [TRACE] (graphTransformerMulti) Completed graph transform *terraform.PruneProviderTransformer (no changes) 2025-05-15T20:02:58.658-0500 [TRACE] Completed graph transform *terraform.graphTransformerMulti (no changes) 2025-05-15T20:02:58.658-0500 [TRACE] Executing graph transform *terraform.AttachSchemaTransformer 2025-05-15T20:02:58.658-0500 [TRACE] Completed graph transform *terraform.AttachSchemaTransformer (no changes) 2025-05-15T20:02:58.658-0500 [TRACE] Executing graph transform *terraform.ModuleExpansionTransformer 2025-05-15T20:02:58.658-0500 [TRACE] Completed graph transform *terraform.ModuleExpansionTransformer (no changes) 2025-05-15T20:02:58.658-0500 [TRACE] Executing graph transform *terraform.ReferenceTransformer 2025-05-15T20:02:58.658-0500 [DEBUG] ReferenceTransformer: "local.enable_auto_scaling (expand)" references: [var.worker_nodepool_names var.worker_nodepool_config_overrides var.enable_auto_scaling] 2025-05-15T20:02:58.658-0500 [DEBUG] ReferenceTransformer: "local.worker_nodepool_configs (expand)" references: [var.worker_nodepool_names local.enable_auto_scaling (expand) var.worker_nodepool_config_overrides var.node_pool_node_count] 2025-05-15T20:02:58.658-0500 [DEBUG] ReferenceTransformer: "var.enable_auto_scaling" references: [] 2025-05-15T20:02:58.658-0500 [DEBUG] ReferenceTransformer: "var.node_pool_node_count" references: [] 2025-05-15T20:02:58.658-0500 [DEBUG] ReferenceTransformer: "var.worker_nodepool_names" references: [] 2025-05-15T20:02:58.658-0500 [DEBUG] ReferenceTransformer: "var.worker_nodepool_config_overrides" references: [] 2025-05-15T20:02:58.658-0500 [TRACE] Completed graph transform *terraform.ReferenceTransformer with new graph: local.enable_auto_scaling (expand) - *terraform.nodeExpandLocal var.enable_auto_scaling - *terraform.NodeRootVariable var.worker_nodepool_config_overrides - *terraform.NodeRootVariable var.worker_nodepool_names - *terraform.NodeRootVariable local.worker_nodepool_configs (expand) - *terraform.nodeExpandLocal local.enable_auto_scaling (expand) - *terraform.nodeExpandLocal var.node_pool_node_count - *terraform.NodeRootVariable var.worker_nodepool_config_overrides - *terraform.NodeRootVariable var.worker_nodepool_names - *terraform.NodeRootVariable var.enable_auto_scaling - *terraform.NodeRootVariable var.node_pool_node_count - *terraform.NodeRootVariable var.worker_nodepool_config_overrides - *terraform.NodeRootVariable var.worker_nodepool_names - *terraform.NodeRootVariable ------ 2025-05-15T20:02:58.658-0500 [TRACE] Executing graph transform *terraform.CloseProviderTransformer 2025-05-15T20:02:58.658-0500 [TRACE] Completed graph transform *terraform.CloseProviderTransformer (no changes) 2025-05-15T20:02:58.658-0500 [TRACE] Executing graph transform *terraform.CloseRootModuleTransformer 2025-05-15T20:02:58.658-0500 [TRACE] Completed graph transform *terraform.CloseRootModuleTransformer with new graph: local.enable_auto_scaling (expand) - *terraform.nodeExpandLocal var.enable_auto_scaling - *terraform.NodeRootVariable var.worker_nodepool_config_overrides - *terraform.NodeRootVariable var.worker_nodepool_names - *terraform.NodeRootVariable local.worker_nodepool_configs (expand) - *terraform.nodeExpandLocal local.enable_auto_scaling (expand) - *terraform.nodeExpandLocal var.node_pool_node_count - *terraform.NodeRootVariable var.worker_nodepool_config_overrides - *terraform.NodeRootVariable var.worker_nodepool_names - *terraform.NodeRootVariable root - *terraform.nodeCloseModule local.worker_nodepool_configs (expand) - *terraform.nodeExpandLocal var.enable_auto_scaling - *terraform.NodeRootVariable var.node_pool_node_count - *terraform.NodeRootVariable var.worker_nodepool_config_overrides - *terraform.NodeRootVariable var.worker_nodepool_names - *terraform.NodeRootVariable ------ 2025-05-15T20:02:58.658-0500 [TRACE] Executing graph transform *terraform.TransitiveReductionTransformer 2025-05-15T20:02:58.659-0500 [TRACE] Completed graph transform *terraform.TransitiveReductionTransformer with new graph: local.enable_auto_scaling (expand) - *terraform.nodeExpandLocal var.enable_auto_scaling - *terraform.NodeRootVariable var.worker_nodepool_config_overrides - *terraform.NodeRootVariable var.worker_nodepool_names - *terraform.NodeRootVariable local.worker_nodepool_configs (expand) - *terraform.nodeExpandLocal local.enable_auto_scaling (expand) - *terraform.nodeExpandLocal var.node_pool_node_count - *terraform.NodeRootVariable root - *terraform.nodeCloseModule local.worker_nodepool_configs (expand) - *terraform.nodeExpandLocal var.enable_auto_scaling - *terraform.NodeRootVariable var.node_pool_node_count - *terraform.NodeRootVariable var.worker_nodepool_config_overrides - *terraform.NodeRootVariable var.worker_nodepool_names - *terraform.NodeRootVariable ------ 2025-05-15T20:02:58.659-0500 [DEBUG] Starting graph walk: walkEval 2025-05-15T20:02:58.659-0500 [TRACE] vertex "var.worker_nodepool_config_overrides": starting visit (*terraform.NodeRootVariable) 2025-05-15T20:02:58.659-0500 [TRACE] vertex "var.enable_auto_scaling": starting visit (*terraform.NodeRootVariable) 2025-05-15T20:02:58.659-0500 [TRACE] vertex "var.enable_auto_scaling": belongs to 2025-05-15T20:02:58.659-0500 [TRACE] vertex "var.worker_nodepool_names": starting visit (*terraform.NodeRootVariable) 2025-05-15T20:02:58.659-0500 [TRACE] vertex "var.node_pool_node_count": starting visit (*terraform.NodeRootVariable) 2025-05-15T20:02:58.659-0500 [TRACE] NodeRootVariable: evaluating var.enable_auto_scaling 2025-05-15T20:02:58.659-0500 [TRACE] prepareFinalInputVariableValue: preparing var.enable_auto_scaling 2025-05-15T20:02:58.659-0500 [TRACE] prepareFinalInputVariableValue: var.enable_auto_scaling has a default value 2025-05-15T20:02:58.659-0500 [TRACE] vertex "var.node_pool_node_count": belongs to 2025-05-15T20:02:58.659-0500 [TRACE] NodeRootVariable: evaluating var.node_pool_node_count 2025-05-15T20:02:58.659-0500 [TRACE] prepareFinalInputVariableValue: preparing var.node_pool_node_count 2025-05-15T20:02:58.659-0500 [TRACE] prepareFinalInputVariableValue: var.node_pool_node_count has a default value 2025-05-15T20:02:58.659-0500 [TRACE] prepareFinalInputVariableValue: var.node_pool_node_count has no defined value 2025-05-15T20:02:58.659-0500 [TRACE] vertex "var.worker_nodepool_config_overrides": belongs to 2025-05-15T20:02:58.659-0500 [TRACE] NodeRootVariable: evaluating var.worker_nodepool_config_overrides 2025-05-15T20:02:58.659-0500 [TRACE] prepareFinalInputVariableValue: preparing var.worker_nodepool_config_overrides 2025-05-15T20:02:58.659-0500 [TRACE] prepareFinalInputVariableValue: var.worker_nodepool_config_overrides has a default value 2025-05-15T20:02:58.659-0500 [TRACE] vertex "var.worker_nodepool_names": belongs to 2025-05-15T20:02:58.659-0500 [TRACE] NodeRootVariable: evaluating var.worker_nodepool_names 2025-05-15T20:02:58.659-0500 [TRACE] prepareFinalInputVariableValue: preparing var.worker_nodepool_names 2025-05-15T20:02:58.659-0500 [TRACE] prepareFinalInputVariableValue: var.worker_nodepool_names has a default value 2025-05-15T20:02:58.659-0500 [TRACE] vertex "var.enable_auto_scaling": visit complete 2025-05-15T20:02:58.659-0500 [TRACE] vertex "var.node_pool_node_count": visit complete 2025-05-15T20:02:58.659-0500 [TRACE] vertex "var.worker_nodepool_names": visit complete 2025-05-15T20:02:58.659-0500 [TRACE] vertex "var.worker_nodepool_config_overrides": visit complete 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.enable_auto_scaling (expand)": starting visit (*terraform.nodeExpandLocal) 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.enable_auto_scaling (expand)": does not belong to any module instance 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.enable_auto_scaling (expand)": expanding dynamic subgraph 2025-05-15T20:02:58.659-0500 [TRACE] Expanding local: adding local.enable_auto_scaling as *terraform.NodeLocal 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.enable_auto_scaling (expand)": entering dynamic subgraph 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.enable_auto_scaling": starting visit (*terraform.NodeLocal) 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.enable_auto_scaling": belongs to 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.enable_auto_scaling": visit complete 2025-05-15T20:02:58.659-0500 [TRACE] vertex "root": starting visit (terraform.graphNodeRoot) 2025-05-15T20:02:58.659-0500 [TRACE] vertex "root": does not belong to any module instance 2025-05-15T20:02:58.659-0500 [TRACE] vertex "root": visit complete 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.enable_auto_scaling (expand)": dynamic subgraph completed successfully 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.enable_auto_scaling (expand)": visit complete 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.worker_nodepool_configs (expand)": starting visit (*terraform.nodeExpandLocal) 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.worker_nodepool_configs (expand)": does not belong to any module instance 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.worker_nodepool_configs (expand)": expanding dynamic subgraph 2025-05-15T20:02:58.659-0500 [TRACE] Expanding local: adding local.worker_nodepool_configs as *terraform.NodeLocal 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.worker_nodepool_configs (expand)": entering dynamic subgraph 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.worker_nodepool_configs": starting visit (*terraform.NodeLocal) 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.worker_nodepool_configs": belongs to 2025-05-15T20:02:58.659-0500 [ERROR] vertex "local.worker_nodepool_configs" error: Error in function call 2025-05-15T20:02:58.659-0500 [ERROR] vertex "local.worker_nodepool_configs" error: Error in function call 2025-05-15T20:02:58.659-0500 [ERROR] vertex "local.worker_nodepool_configs" error: Error in function call 2025-05-15T20:02:58.659-0500 [ERROR] vertex "local.worker_nodepool_configs" error: Error in function call 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.worker_nodepool_configs": visit complete, with errors 2025-05-15T20:02:58.659-0500 [TRACE] dag/walk: upstream of "root" errored, so skipping 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.worker_nodepool_configs (expand)": dynamic subgraph encountered errors: Error in function call,Error in function call,Error in function call,Error in function call 2025-05-15T20:02:58.659-0500 [ERROR] vertex "local.worker_nodepool_configs (expand)" error: Error in function call 2025-05-15T20:02:58.659-0500 [ERROR] vertex "local.worker_nodepool_configs (expand)" error: Error in function call 2025-05-15T20:02:58.659-0500 [ERROR] vertex "local.worker_nodepool_configs (expand)" error: Error in function call 2025-05-15T20:02:58.659-0500 [ERROR] vertex "local.worker_nodepool_configs (expand)" error: Error in function call 2025-05-15T20:02:58.659-0500 [TRACE] vertex "local.worker_nodepool_configs (expand)": visit complete, with errors 2025-05-15T20:02:58.659-0500 [TRACE] dag/walk: upstream of "root" errored, so skipping ╷ │ Error: Error in function call │ │ on locals.tf line 45, in locals: │ 45: node_count = !coalesce(local.enable_auto_scaling[key], false) ? coalesce(try(var.worker_nodepool_config_overrides[key].node_count, null), var.node_pool_node_count) : null │ ├──────────────── │ │ var.node_pool_node_count is null │ │ var.worker_nodepool_config_overrides is map of object with 4 elements │ │ Call to function "coalesce" failed: no non-null, non-empty-string arguments. ╵ ╷ │ Error: Error in function call │ │ on locals.tf line 45, in locals: │ 45: node_count = !coalesce(local.enable_auto_scaling[key], false) ? coalesce(try(var.worker_nodepool_config_overrides[key].node_count, null), var.node_pool_node_count) : null │ ├──────────────── │ │ var.node_pool_node_count is null │ │ var.worker_nodepool_config_overrides is map of object with 4 elements │ │ Call to function "coalesce" failed: no non-null, non-empty-string arguments. ╵ ╷ │ Error: Error in function call │ │ on locals.tf line 45, in locals: │ 45: node_count = !coalesce(local.enable_auto_scaling[key], false) ? coalesce(try(var.worker_nodepool_config_overrides[key].node_count, null), var.node_pool_node_count) : null │ ├──────────────── │ │ var.node_pool_node_count is null │ │ var.worker_nodepool_config_overrides is map of object with 4 elements │ │ Call to function "coalesce" failed: no non-null, non-empty-string arguments. ╵ ╷ │ Error: Error in function call │ │ on locals.tf line 45, in locals: │ 45: node_count = !coalesce(local.enable_auto_scaling[key], false) ? coalesce(try(var.worker_nodepool_config_overrides[key].node_count, null), var.node_pool_node_count) : null │ ├──────────────── │ │ var.node_pool_node_count is null │ │ var.worker_nodepool_config_overrides is map of object with 4 elements │ │ Call to function "coalesce" failed: no non-null, non-empty-string arguments. ╵ ╷ │ Warning: Due to the problems above, some expressions may produce unexpected results. │ │ ╵ ``` ### Expected Behavior `local.enable_auto_scaling` should evaluate as follows: ``` > local.enable_auto_scaling { "bluez1" = true "bluez2" = true "greenz1" = true "greenz2" = true } ``` These true values should all come from `var.enable_auto_scaling`. In essence, I'm building a configuration where configuration of autoscaling is optional, so any of `true`, `false`, or `null` is acceptable. I'm building several kubernetes nodepools using `for_each` and want to define a value for several parameters via top level variables, but also have an override variable where specific node pools can have configuration that is different from the others. If autoscaling is defined at the top level, and there is no override for a given nodepool, then the nodepool should use the value from the top level definition. Currently terraform throws an error and I have to use `coalesce(try(var.worker_nodepool_config_overrides[key].enable_auto_scaling, null), var.enable_auto_scaling, false)` (adding `coalesce` to `local.enable_auto_scaling` with a `false` as a final condition to the `coalesce`); OR I can set a value for `var.node_pool_node_count`. Neither of these is correct behavior since the ternary should not be evaluating to `true` and should not be executing the `coalesce` function from that `true` evaluation. I admit that it's pedantic to want to have the value defaulted to null in my configuration because defaulting to false in my configuration is the same as the provider default in my case, but I believe it is incorrect behavior to force a module developer to default a value they want the provider to decide when the developer may want the value to be defined by the provider, and thus, known after apply, if the user doesn't define it themself. Is there any workaround to achieve the above? ### Actual Behavior After commenting out `local.worker_nodepool_configs`, the variable `local.enable_auto_scaling` evaluates as follows: ``` > local.enable_auto_scaling { "bluez1" = tobool(null) "bluez2" = tobool(null) "greenz1" = tobool(null) "greenz2" = tobool(null) } ``` This leads to the ternary at line 45 executing the true condition instead of the false condition as mentioned below. ### Steps to Reproduce 1. `terraform console` ### Additional Context Ultimately I want `local.node_pool_node_count` to be `null` if `local.enable_auto_scaling` is either `null` or `false`, but currently I get an error if `local.enable_auto_scaling` is undefined and no overrides are defined because the ternary's `true` condition's `coalesce` function is getting `null` for all expressions due to being incorrectly executed when the ternary should have evaluated to `false` and returned `null`. ### References _No response_ ### Generative AI / LLM assisted development? _No response_
Click on a version to see all relevant bugs
Terraform Integration
Learn more about where this data comes from
Bug Scrub Advisor
Streamline upgrades with automated vendor bug scrubs
BugZero Enterprise
Wish you caught this bug sooner? Get proactive today.