-
Notifications
You must be signed in to change notification settings - Fork 10.3k
panic when variable used in dynamic blocks was requested before it was provided #35863
Copy link
Copy link
Closed
Closed
Copy link
Labels
bugduplicateissue closed because another issue already tracks this problemissue closed because another issue already tracks this problem
Description
Terraform Version
$ terraform version
Terraform v1.9.7
on linux_amd64Terraform Configuration Files
- File:
root/github-lab/provider.tf
terraform {
required_providers {
github = {
source = "integrations/github"
version = "6.3.1"
}
}
}
provider "github" {
owner = "<REDACTED>"
}- File:
root/github-lab/teams/github_importer_lab/terraform.tf
terraform {
required_providers {
github = {
source = "integrations/github"
version = "6.3.1"
}
}
}
- File:
root/github-lab/teams/github_importer_lab/main.tf
module "repositories" {
for_each = local.repositories
source = "../../../../modules/github-repository/"
name = each.key
template = lookup(each.value, "template", null)
is_template = lookup(each.value, "is_template", false)
## [redacted]
}- File:
modules/github-repository/terraform.tf
terraform {
required_providers {
github = {
source = "integrations/github"
version = "6.3.1"
}
}
}- File:
modules/github-repository/variables.tf
## [redacted]
variable "template" {
default = null
type = map(any)
}
## [redacted]- File:
modules/github-repository/main.tf
resource "github_repository" "this" {
name = var.name
description = var.description
visibility = var.visibility
has_issues = var.has_issues
has_projects = var.has_projects
has_wiki = var.has_wiki
has_downloads = var.has_downloads
auto_init = var.auto_init
is_template = var.is_template
## [redacted]
dynamic "template" {
for_each = var.template[*]
content {
owner = lookup(template.value, "owner", "<REDACTED>")
repository = lookup(template.value, "repository", "github-repository-template")
}
}
## [redacted]
}Debug Output
!!!!!!!!!!!!!!!!!!!!!!!!!!! TERRAFORM CRASH !!!!!!!!!!!!!!!!!!!!!!!!!!!!
panic: value for module.team_github_lab.module.repositories["repo"].var.template was requested before it was provided
goroutine 259 [running]:
runtime/debug.Stack()
runtime/debug/stack.go:24 +0x5e
github.com/hashicorp/terraform/internal/logging.PanicHandler()
github.com/hashicorp/terraform/internal/logging/panic.go:84 +0x18b
panic({0x2e7a540?, 0xc00e6e9a30?})
runtime/panic.go:770 +0x132
github.com/hashicorp/terraform/internal/terraform.(*Graph).walk.func1.1()
github.com/hashicorp/terraform/internal/terraform/graph.go:59 +0x4c5
panic({0x2e7a540?, 0xc00e6e9a30?})
runtime/panic.go:770 +0x132
github.com/hashicorp/terraform/internal/namedvals.(*values[...]).GetExactResult(0x3e3a6e0, {{0xc006a71240, 0x2, 0x2}, {{}, {0xc008534618, 0x8}}})
github.com/hashicorp/terraform/internal/namedvals/values.go:88 +0x219
github.com/hashicorp/terraform/internal/namedvals.(*State).GetInputVariableValue(0x2fbd960?, {{0xc006a71240, 0x2, 0x2}, {{}, {0xc008534618, 0x8}}})
github.com/hashicorp/terraform/internal/namedvals/state.go:47 +0xe8
github.com/hashicorp/terraform/internal/terraform.(*evaluationStateData).GetInputVariable(0xc000e60fc0, {{}, {0xc008534618?, 0x20736569726f7469?}}, {{0xc005409b60, 0x27}, {0x1c, 0x10, 0x426}, {0x1c, ...}})
github.com/hashicorp/terraform/internal/terraform/evaluate.go:284 +0x249
github.com/hashicorp/terraform/internal/lang.(*Scope).evalContext(0xc000e61050, {0xc00e6e9850, 0x2, 0x2}, {0x0, 0x0})
github.com/hashicorp/terraform/internal/lang/eval.go:387 +0x1c72
github.com/hashicorp/terraform/internal/lang.(*Scope).EvalContext(...)
github.com/hashicorp/terraform/internal/lang/eval.go:246
github.com/hashicorp/terraform/internal/lang.(*Scope).ExpandBlock(0xc000e61050, {0x3e19b50, 0xc0017b71e0}, 0x0?)
github.com/hashicorp/terraform/internal/lang/eval.go:38 +0xa5
github.com/hashicorp/terraform/internal/terraform.(*BuiltinEvalContext).EvaluateBlock(0x1?, {0x3e19b50, 0xc0017b71e0}, 0xc006ac5650, {0x0?, 0x0?}, {{{{0x0, 0x0}}, {0x0, 0x0}}, ...})
github.com/hashicorp/terraform/internal/terraform/eval_context_builtin.go:316 +0xaa
github.com/hashicorp/terraform/internal/terraform.(*NodeAbstractResourceInstance).plan(0xc007262908, {0x3e3d608, 0xc00bfc54a0}, 0xc00cb2fd40, 0xc0078e78c0, 0x0, {0x0, 0x0, 0x0})
github.com/hashicorp/terraform/internal/terraform/node_resource_abstract_instance.go:842 +0xbcb
github.com/hashicorp/terraform/internal/terraform.(*NodeApplyableResourceInstance).managedResourceExecute(0xc0026d7d40, {0x3e3d608, 0xc00bfc54a0})
github.com/hashicorp/terraform/internal/terraform/node_resource_apply_instance.go:278 +0xafa
github.com/hashicorp/terraform/internal/terraform.(*NodeApplyableResourceInstance).Execute(0x18?, {0x3e3d608?, 0xc00bfc54a0?}, 0x80?)
github.com/hashicorp/terraform/internal/terraform/node_resource_apply_instance.go:145 +0x9a
github.com/hashicorp/terraform/internal/terraform.(*ContextGraphWalker).Execute(0xc0007e1a40, {0x3e3d608, 0xc00bfc54a0}, {0x705ea6966600, 0xc0026d7d40})
github.com/hashicorp/terraform/internal/terraform/graph_walk_context.go:153 +0xbb
github.com/hashicorp/terraform/internal/terraform.(*Graph).walk.func1({0x3501ba0, 0xc0026d7d40})
github.com/hashicorp/terraform/internal/terraform/graph.go:143 +0x83d
github.com/hashicorp/terraform/internal/dag.(*Walker).walkVertex(0xc0077d4a80, {0x3501ba0, 0xc0026d7d40}, 0xc00b4d1500)
github.com/hashicorp/terraform/internal/dag/walk.go:384 +0x2d7
created by github.com/hashicorp/terraform/internal/dag.(*Walker).Update in goroutine 103
github.com/hashicorp/terraform/internal/dag/walk.go:307 +0xff3
Error: Terraform exited with code 11.
Error: Process completed with exit code 1.
Expected Behavior
No crash.
Actual Behavior
Crashes.
Steps to Reproduce
terraform -chdir=root/github-lab/ initterraform -chdir=root/github-lab/ plan -out=tfplan-github.tfplan -refresh=falseterraform -chdir=root/github-lab/ apply tfplan-github.tfplan
Additional Context
I do use one provider definition in root/github-lab/terraform.tf. The only provider, I use is integrations/github.
- Providers.
Providers required by configuration:
.
├── provider[registry.terraform.io/integrations/github] 6.3.1
├── module.team_github_lab
│ ├── provider[registry.terraform.io/integrations/github] 6.3.1
│ ├── module.access
│ │ └── provider[registry.terraform.io/integrations/github] 6.3.1
│ └── module.repositories
│ └── provider[registry.terraform.io/integrations/github] 6.3.1
- File tree.
.
├── README.md
├── modules
│ ├── github-repository
│ │ ├── main.tf
│ │ ├── terraform.tf
│ │ └── variables.tf
│ └── github-repository-access
│ ├── main.tf
│ ├── terraform.tf
│ └── variables.tf
└── root
└── github-lab
├── import.tf
├── main.tf
├── provider.tf
├── repositories
│ └── github_importer_lab.yaml
├── teams
│ └── github_importer_lab
│ ├── main.tf
│ ├── terraform.tf
│ └── variables.tf
└── terraform.tf
- Plan itself.
# module.team_github_lab.module.repositories["repo"]
# (imported from "repo")
~ resource "github_repository" "this" {
allow_auto_merge = false
~ allow_merge_commit = true -> false
allow_rebase_merge = true
~ allow_squash_merge = true -> false
~ allow_update_branch = false -> true
+ archive_on_destroy = true
archived = false
~ auto_init = false -> true
default_branch = "master"
~ delete_branch_on_merge = false -> true
description = null
etag = [redacted]
full_name = "[redacted]"
git_clone_url = "[redacted]"
has_discussions = false
has_downloads = false
~ has_issues = true -> false
~ has_projects = true -> false
has_wiki = false
homepage_url = null
html_url = "[redacted]"
http_clone_url = "[redacted]"
id = "[redacted]"
is_template = false
merge_commit_message = "PR_TITLE"
merge_commit_title = "MERGE_MESSAGE"
name = "[redacted]"
node_id = "[redacted]"
primary_language = "Groovy"
private = true
repo_id = 872958661
squash_merge_commit_message = "COMMIT_MESSAGES"
squash_merge_commit_title = "COMMIT_OR_PR_TITLE"
ssh_clone_url = "[redacted]"
svn_url = "[redacted]"
topics = []
visibility = "private"
~ vulnerability_alerts = false -> true
web_commit_signoff_required = false
}
References
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugduplicateissue closed because another issue already tracks this problemissue closed because another issue already tracks this problem