SECURITY WARNING: Never run commands you don't understand. Always review code before execution. Use at your own risk.
Terraform 18 errors

Terraform & IaC Errors

State locks, provider auth, drift, dependency cycles and plan-time unknowns.

Understanding Terraform errors

Terraform errors are mostly state errors. A stuck lock, a resource that exists in the cloud but not in state, or a value that cannot be known until apply time all trace back to how Terraform models the world. The for_each-on-unknown-values error is the most common conceptual stumble: Terraform must know the keys of a map at plan time, even if the values are unknown.

How to debug Terraform errors

  1. For a stuck lock, find out who holds it before forcing anything. terraform force-unlock <id> is safe only when you are certain no apply is running.
  2. Use terraform state list and terraform state show <addr> to see what Terraform believes exists, and terraform import to adopt resources created outside it.
  3. Set TF_LOG=DEBUG and TF_LOG_PATH=tf.log for provider-level detail on authentication and API errors.
  4. For for_each errors, restructure so keys come from static values or from variables, not from attributes of resources that do not yet exist. Use -target for a staged apply as a last resort.
  5. Run terraform plan -refresh-only to see drift explicitly before applying anything unexpected.

Tools worth reaching for

  • terraform state list/show
  • TF_LOG=DEBUG
  • terraform plan -refresh-only
  • terraform graph
  • tflint / checkov

All 18 Terraform errors

Other categories