Skip to main content

Terraform Variable Builder

Build Terraform variable blocks for your variables.tf. Set type, default, description, sensitivity, and validation rules — then copy the HCL.

✓ All Terraform types ✓ Validation blocks ✓ Sensitive flag ✓ Multi-variable output

Frequently Asked Questions

What is a Terraform variable block?▼

A variable block declares an input variable for a Terraform module. It defines the variable's type, default value, description, and optional validation rules. Variables make modules reusable by parameterizing resource configurations. They are set via .tfvars files, -var flags, environment variables (TF_VAR_*), or Terraform Cloud workspace variables.

What types can Terraform variables have?▼

Terraform supports primitive types (string, number, bool) and structural types (list(), map(), set(), object(), tuple()). For example, list(string) is a list of strings, map(number) is a map with string keys and number values. You can also use any to disable type checking, but this reduces safety.

How do I mark a variable as sensitive?▼

Add sensitive = true to the variable block. Terraform will redact the value in plan and apply output, and won't store it in state. Note: sensitive only prevents display in CLI output — the value is still stored in state. Use remote state with encryption (e.g., S3 with SSE-KMS) for production secrets.

What is a validation block?▼

A validation block adds custom constraints to a variable. It has condition (a bool expression using var.<name>) and error_message (shown when condition is false). Example: condition = can(regex('^[a-z][a-z0-9-]*$', var.name)) — ensures the name is lowercase and DNS-safe. Multiple validation blocks are allowed per variable.

Where should I put variables.tf?▼

By convention, declare all input variables in a file called variables.tf. Set values for local environments in terraform.tfvars (auto-loaded by Terraform). For multiple environments, use separate files: dev.tfvars, prod.tfvars, loaded with -var-file=prod.tfvars. Never commit .tfvars files with real secrets.

What is the difference between variable, local, and output?▼

variable is for inputs — values provided externally to the module. local (in a locals block) is for intermediate computed values inside the module — think constants or expressions you reuse. output is for exposing values from a module to its caller or for display after terraform apply. They serve different roles in the data flow.

Share this tool: X / Twitter LinkedIn
✓ 60,000+ developers use DevPlaybook ★★★★★ 4.8 / 5 on Gumroad ✓ MIT licensed · Instant download ✓ No login required

Related Products

on Gumroad

You Might Also Need

More Free Tools

Enjoying this tool? Get more like it.

Weekly developer tool guides, productivity playbooks & AI tricks. Free. No spam.

DevPlaybook Pro 7 days free

Unlock AI-Powered Dev Tools

  • ⚡ AI Code Review, Doc Generator & SQL Builder
  • ⚡ All premium templates & early access
  • ⚡ Member discounts on Gumroad products
Start Free Trial →

$9/mo after trial · Cancel anytime

Want the full toolkit?

Get DevPlaybook Pro

Every template, guide, boilerplate, and automation script in one bundle. 13 premium products — grab them all at once and save big.

$79
$241 separately Save $162 (67% off)
Get DevPlaybook Pro — $79 →

MIT licensed · Instant download · No subscription

See what's included → Browse all deals →