📖 Guide

Terraform Commands Cheat Sheet — Complete Reference

Every Terraform command you need, from init to state management, modules, and HCL syntax. Searchable and organized.

122 commands across 11 categories

Core Workflow

CommandDescription
terraform init
Initialize a working directory (download providers & modules)
terraform init -upgrade
Upgrade providers and modules to latest allowed versions
terraform init -backend-config=backend.hcl
Initialize with external backend configuration
terraform init -migrate-state
Migrate state to a new backend during init
terraform plan
Preview changes without applying
terraform plan -out=plan.tfplan
Save plan to a file for later apply
terraform plan -target=aws_instance.web
Plan changes for a specific resource only
terraform plan -var 'region=us-east-1'
Pass a variable via command line
terraform plan -var-file=prod.tfvars
Use a variable definitions file
terraform plan -destroy
Preview what would be destroyed
terraform apply
Apply changes (prompts for confirmation)
terraform apply -auto-approve
Apply without confirmation prompt
terraform apply plan.tfplan
Apply a saved plan file
terraform apply -parallelism=20
Apply with increased parallelism (default 10)
terraform destroy
Destroy all managed infrastructure
terraform destroy -auto-approve
Destroy without confirmation
terraform destroy -target=aws_instance.web
Destroy a specific resource
terraform validate
Check configuration syntax and consistency
terraform fmt
Format configuration files to canonical style
terraform fmt -recursive
Format all files in subdirectories too
terraform fmt -check
Check if files are formatted (exit 1 if not)

State Management

CommandDescription
terraform state list
List all resources in the state
terraform state show aws_instance.web
Show detailed state for a resource
terraform state pull
Pull remote state and output to stdout
terraform state push state.tfstate
Push a local state file to the remote backend
terraform state rm aws_instance.web
Remove a resource from state (without destroying)
terraform state mv aws_instance.old aws_instance.new
Rename a resource in state
terraform state mv -state-out=other.tfstate aws_instance.web aws_instance.web
Move resource to another state file
terraform state replace-provider hashicorp/aws registry.example.com/aws
Replace provider in state
terraform refresh
Update state to match real infrastructure (deprecated — use plan -refresh-only)
terraform plan -refresh-only
Detect drift without changing infrastructure
terraform show
Show the current state in human-readable format
terraform show plan.tfplan
Show a saved plan file
terraform show -json
Output state as JSON
terraform output
Show all output values
terraform output -json
Show outputs as JSON
terraform output instance_ip
Show a specific output value

Workspaces

CommandDescription
terraform workspace list
List all workspaces
terraform workspace new staging
Create a new workspace
terraform workspace select production
Switch to a workspace
terraform workspace show
Show the current workspace name
terraform workspace delete staging
Delete a workspace
terraform.workspace
e.g. tags = { env = terraform.workspace }
Reference current workspace name in HCL

Import & Move

CommandDescription
terraform import aws_instance.web i-1234567890
Import existing infrastructure into state
import {\n to = aws_instance.web\n id = "i-1234567890"\n}
Import block (Terraform 1.5+ — declarative import)
terraform plan -generate-config-out=generated.tf
Generate config for imported resources
moved {\n from = aws_instance.old\n to = aws_instance.new\n}
Moved block — refactor without destroy/recreate
terraform taint aws_instance.web
Mark a resource to be recreated on next apply (deprecated)
terraform untaint aws_instance.web
Remove the taint from a resource
terraform apply -replace=aws_instance.web
Force replacement of a resource (preferred over taint)

HCL Syntax Basics

CommandDescription
variable "name" {\n type = string\n default = "world"\n}
Declare an input variable
variable "port" {\n type = number\n description = "App port"\n validation {\n condition = var.port > 0\n error_message = "Must be positive"\n }\n}
Variable with validation
variable "tags" {\n type = map(string)\n default = {}\n}
Map variable type
variable "zones" {\n type = list(string)\n}
List variable type
output "ip" {\n value = aws_instance.web.public_ip\n}
Declare an output value
output "password" {\n value = random_password.db.result\n sensitive = true\n}
Sensitive output (hidden in CLI)
locals {\n env = terraform.workspace\n prefix = "${local.env}-app"\n}
Define local values
data "aws_ami" "ubuntu" {\n most_recent = true\n filter { ... }\n}
Data source — read existing infrastructure
data "aws_vpc" "main" {\n default = true\n}
Look up the default VPC
var.name
Reference an input variable
local.prefix
Reference a local value
data.aws_ami.ubuntu.id
Reference a data source attribute

Resource Blocks

CommandDescription
resource "aws_instance" "web" {\n ami = data.aws_ami.ubuntu.id\n instance_type = "t3.micro"\n}
Basic resource definition
count = 3
Create multiple instances of a resource
count = var.create ? 1 : 0
Conditionally create a resource
for_each = toset(["web", "api"])
Create instances from a set
for_each = var.instances
Iterate over a map variable
depends_on = [aws_iam_role.app]
Explicit dependency between resources
lifecycle {\n create_before_destroy = true\n}
Create replacement before destroying old
lifecycle {\n prevent_destroy = true\n}
Prevent accidental destruction
lifecycle {\n ignore_changes = [tags]\n}
Ignore specific attribute changes
lifecycle {\n replace_triggered_by = [null_resource.trigger]\n}
Replace resource when trigger changes
provisioner "local-exec" {\n command = "echo ${self.public_ip}"\n}
Run local command after resource creation
timeouts {\n create = "30m"\n delete = "15m"\n}
Custom timeout for resource operations

Providers

CommandDescription
terraform {\n required_providers {\n aws = {\n source = "hashicorp/aws"\n version = "~> 5.0"\n }\n }\n}
Declare a required provider with version constraint
provider "aws" {\n region = "us-east-1"\n}
Configure a provider
provider "aws" {\n alias = "west"\n region = "us-west-2"\n}
Provider alias for multi-region
resource "aws_instance" "web" {\n provider = aws.west\n}
Use an aliased provider
terraform {\n required_version = ">= 1.5.0"\n}
Require a minimum Terraform version
terraform providers
List providers required by configuration
terraform providers lock
Generate or update dependency lock file
terraform providers mirror /path/to/mirror
Mirror provider plugins locally

Modules

CommandDescription
module "vpc" {\n source = "./modules/vpc"\n cidr = "10.0.0.0/16"\n}
Use a local module
module "vpc" {\n source = "terraform-aws-modules/vpc/aws"\n version = "5.0.0"\n}
Use a module from the Terraform Registry
module "app" {\n source = "git::https://example.com/repo.git//modules/app?ref=v1.0"\n}
Use a module from a Git repository
module.vpc.vpc_id
Reference a module output
terraform get
Download and update modules
terraform get -update
Force update of already-downloaded modules
terraform init -upgrade
Upgrade modules and providers during init

Functions

CommandDescription
join(", ", var.list)
Join list elements with a separator
split(",", var.csv)
Split a string into a list
length(var.list)
Get length of a list, map, or string
lookup(var.map, "key", "default")
Look up a key in a map with default
merge(var.map1, var.map2)
Merge multiple maps
concat(var.list1, var.list2)
Concatenate lists
flatten([var.list1, var.list2])
Flatten nested lists into a single list
coalesce(var.a, var.b, "default")
Return first non-null, non-empty value
try(var.obj.key, "fallback")
Try an expression, return fallback on error
file("${path.module}/script.sh")
Read file contents
templatefile("tpl.sh", { name = var.name })
Render a template with variables
cidrsubnet("10.0.0.0/16", 8, 1)
e.g. cidrsubnet("10.0.0.0/16", 8, 1) → "10.0.1.0/24"
Calculate a subnet CIDR
format("Hello, %s!", var.name)
Format a string (printf-style)
replace(var.str, "old", "new")
Replace substring in a string
regex("^([a-z]+)", var.str)
Extract regex match from a string
toset(var.list)
Convert a list to a set (deduplicate)
jsonencode(var.object)
Encode a value as JSON
yamldecode(file("config.yaml"))
Decode YAML content
base64encode(var.data)
Base64 encode a string

Backend Configuration

CommandDescription
terraform {\n backend "s3" {\n bucket = "my-tfstate"\n key = "prod/terraform.tfstate"\n region = "us-east-1"\n }\n}
S3 backend configuration
terraform {\n backend "azurerm" {\n resource_group_name = "tfstate"\n storage_account_name = "tfstate"\n container_name = "tfstate"\n key = "prod.tfstate"\n }\n}
Azure Storage backend
terraform {\n backend "gcs" {\n bucket = "my-tfstate"\n prefix = "prod"\n }\n}
Google Cloud Storage backend
terraform {\n backend "local" {\n path = "terraform.tfstate"\n }\n}
Local file backend (default)
terraform {\n cloud {\n organization = "my-org"\n workspaces { name = "prod" }\n }\n}
Terraform Cloud / HCP backend
terraform force-unlock <LOCK_ID>
Manually unlock a locked state

Best Practices

CommandDescription
terraform plan -out=plan.tfplan && terraform apply plan.tfplan
Always save and apply plan files in CI/CD
.terraform/\n*.tfstate\n*.tfstate.backup\n*.tfvars
Add to .gitignore — never commit state or secrets
terraform {\n required_version = ">= 1.5"\n}
Pin Terraform version in every project
version = "~> 5.0"
Use pessimistic version constraints for providers
terraform console
e.g. > length(["a", "b"]) 2
Interactive console to test expressions
terraform graph | dot -Tsvg > graph.svg
Generate a visual dependency graph
TF_LOG=DEBUG terraform plan
Enable debug logging
TF_LOG_PATH=terraform.log terraform plan
Write debug logs to a file

More Guides

🌿
Git Commands
Complete Git command reference cheat sheet — from basics to advanced workflows, including branching, stashing, rebasing, and tagging. Searchable, with examples.
📝
Vim Commands
Complete Vim/Vi command reference cheat sheet — modes, motions, editing, search and replace, macros, registers, marks, and window management.
🐳
Docker Commands
Complete Docker & Docker Compose command reference cheat sheet — containers, images, volumes, networks, registry auth, buildx multi-platform builds, & cleanup.
🔤
Regex Reference
Complete regular expression reference cheat sheet — character classes, anchors, quantifiers, groups, lookaheads, flags, and JavaScript string methods.
🐧
Linux Commands
Complete Linux/Bash command reference cheat sheet — file management, text processing, networking, system admin, and shell scripting.
☸️
Kubernetes Commands
Complete Kubernetes & kubectl command reference cheat sheet — pods, deployments, services, secrets, namespaces, scaling, RBAC, networking, and Helm charts.
🐍
Python Reference
Complete Python reference — syntax, data structures, string methods, control flow, classes, error handling, file I/O, comprehensions, and built-ins.
🗃️
SQL Reference
Complete SQL reference cheat sheet — queries, joins, aggregation, subqueries, indexes, window functions, string and date functions, and database management.
🌐
Nginx Reference
Complete Nginx configuration reference — server blocks, locations, proxying, SSL, load balancing, caching, security headers, and rate limiting.
🔐
SSH Commands
Complete SSH reference — connections, key management, tunneling, config, SCP/SFTP, agent forwarding, security hardening, and troubleshooting.
👷
Jenkins Reference
Complete Jenkins reference — pipeline syntax, Jenkinsfile, plugins, CLI, agents, shared libraries, credentials, and CI/CD patterns.
📨
HTTP Headers Reference
Complete HTTP headers reference — request headers, response headers, caching, security, CORS, and content negotiation. Searchable, with examples.
🐘
PostgreSQL Reference
Comprehensive PostgreSQL reference — from connection basics to advanced features like JSONB, full-text search, window functions, and performance tuning.
⚡
Async Patterns Reference
Multi-language async/concurrency patterns — JavaScript, Python, Go, Rust, Java, plus retry, rate limiting, and circuit breaker patterns.
📡
Protobuf & gRPC Reference
Comprehensive reference for Protocol Buffers (proto3) and gRPC — message definitions, services, streaming, and common patterns.
📚
JS Array Methods
Complete JavaScript Array methods reference — creating, searching, transforming, sorting, iterating, and common patterns. Searchable, with examples.
🌊
Tailwind CSS Reference
Complete Tailwind CSS reference — layout, spacing, typography, colors, responsive design, states, and common patterns. Searchable, with examples.
◈
GraphQL Reference
Complete GraphQL reference — schema definition, types, queries, mutations, directives, fragments, and common patterns. Searchable, with examples.
💻
VS Code Shortcuts
Complete VS Code keyboard shortcuts cheat sheet — editing, navigation, search, multi-cursor, terminal, debug, and more. Searchable, with Cmd/Ctrl notation.
🔲
CSS Grid Reference
Complete CSS Grid reference — container properties, item placement, grid functions, and common layout patterns. Searchable, with examples.
📦
CSS Flexbox Reference
Complete CSS Flexbox reference — container properties, item properties, and common layout patterns. Searchable, with examples.
⚛️
React Hooks Reference
Complete React Hooks reference — useState, useEffect, useContext, custom hooks, and common patterns. Searchable, with examples.
🔷
TypeScript Reference
Complete TypeScript reference — types, interfaces, generics, utility types, and advanced patterns. Searchable, with examples.
☁️
AWS CLI Reference
Complete AWS CLI reference — EC2, S3, IAM, Lambda, ECS, RDS, CloudFormation, CloudWatch, SQS/SNS, Route 53, and common operations.
🐹
Go Reference
Complete Go (Golang) reference — syntax, types, structs, interfaces, goroutines, channels, error handling, testing, and the standard library.
💠
PowerShell Reference
Complete PowerShell reference — cmdlets, pipelines, scripting, file operations, remote management, and Active Directory.
💾
Redis Commands
Complete Redis command reference — strings, hashes, lists, sets, sorted sets, pub/sub, transactions, and server management.
⚙️
Ansible Commands
Complete Ansible reference — playbooks, modules, inventory, roles, vault, Galaxy, handlers, conditionals, loops, and ad-hoc commands.
🪶
Apache
Complete Apache HTTP Server cheat sheet — virtual hosts, modules, rewrite rules, and SSL, plus access control, logging, and performance.
🔤
ASCII Table
Complete ASCII character reference with decimal, hexadecimal, and character values, plus control codes and common escape sequences.
🔧
Awk
Powerful text processing language for pattern scanning, data extraction, arrays, control flow, and report generation with built-in variables.
💻
Bash
Complete Bash reference cheat sheet — variables, strings, arrays, conditionals, loops, functions, file tests, I/O redirection, process management, and more.
⚙️
C
Complete C programming cheat sheet covering syntax, pointers, memory management, structs, file I/O, preprocessor, and standard library.
🔐
Chmod
Linux file permission commands and patterns for chmod, covering numeric and symbolic modes, recursive changes, and SUID/SGID/sticky bits.
🔧
Chrome DevTools
Essential Chrome DevTools shortcuts, commands, and workflows for web developers — covering Network, Performance, and Application panels.
🔷
C++
Complete C++ cheat sheet covering STL containers, OOP, templates, smart pointers, iterators, lambda expressions, and modern C++ features.
⏰
Cron
Cron scheduling reference covering syntax, special strings, field values, crontab management, environment variables, and logging.
🎨
CSS
Complete CSS reference cheat sheet — selectors, box model, positioning, typography, animations, media queries, custom properties, and more.
🌐
Curl
Curl command-line reference for HTTP requests, headers, authentication, cookies, proxies, file transfers, SSL/TLS, debugging, and API patterns.
🎯
Dart
Dart language cheat sheet covering syntax, types, OOP, null safety, and async patterns, plus collections, error handling, and classes.
🐳
Docker Compose
Docker Compose reference covering CLI commands, service configuration, networking, volumes, health checks, profiles, and build options.
💧
Drizzle ORM
Complete Drizzle ORM reference for schema definition, column types, queries, filters, joins, relations, migrations, indexes, and patterns.
⚡
Emmet
Quick reference for Emmet abbreviations for lightning-fast HTML and CSS coding, covering nesting, multiplication, numbering, and grouping.
🔍
Find
Search for files and directories in a directory hierarchy with powerful filtering by name, size, time, permissions, type, and actions.
🔥
Firebase
Firebase reference covering Authentication, Firestore, Realtime Database, Cloud Functions, Hosting, Storage, and security rules.
🤖
GitHub Actions
Complete GitHub Actions cheat sheet — workflows, triggers, jobs, and CI/CD patterns, plus matrix strategies, caching, and artifacts.
🔎
Grep
Search text using patterns. Filter lines from files, command output, or streams with regular expressions, context options, and file filtering.
📄
HTML
Complete HTML reference — document structure, text content, links, forms, tables, media, semantic elements, meta tags, attributes, and accessibility.
📡
HTTP Status Codes
Complete reference of all standard HTTP response status codes across 1xx-5xx classes, with descriptions, examples, and common usage patterns.
☕
Java
Complete Java reference — data types, strings, collections, OOP, interfaces, exceptions, file I/O, streams, lambdas, and more.
🟨
JavaScript
Complete JavaScript reference — variables, types, operators, strings, arrays, objects, functions, async, DOM, ES6+, and more.
💲
jQuery
Quick reference for jQuery selectors, DOM manipulation, events, AJAX, and more, including animation effects, traversing, and plugins.
🔺
Laravel
Laravel PHP framework cheat sheet for routing, Eloquent, Blade, Artisan, and more, plus middleware, validation, and authentication.
📐
LaTeX
Quick reference for LaTeX document structure, math mode, formatting, and common packages, plus figures, tables, and citation styles.
📝
Markdown
Complete Markdown syntax reference for headings, formatting, links, tables, code blocks, task lists, footnotes, and extensions.
🍃
MongoDB
MongoDB reference covering CRUD operations, aggregation, indexes, and administration, plus replica sets, users, roles, and query operators.
🐬
MySQL
Complete MySQL cheat sheet covering queries, joins, indexes, transactions, data types, user permissions, and database administration.
▲
Next.js
Next.js App Router reference covering routing, data fetching, server components, API routes, middleware, and deployment configuration.
🟩
Node.js
Comprehensive Node.js runtime reference covering modules, file system, HTTP, streams, events, child processes, and npm scripts.
📦
npm
Complete npm cheat sheet — package management, scripts, publishing, and configuration, plus workspaces, security audits, and npx.
🔢
NumPy
Essential NumPy commands for array manipulation and numerical computing in Python, covering reshaping, broadcasting, and linear algebra.
🐼
Pandas
Pandas cheat sheet for data manipulation, analysis, and transformation in Python, covering DataFrames, grouping, merging, and date/time.
🐘
PHP
Complete PHP cheat sheet covering syntax, OOP, arrays, PDO, and modern PHP 8.x features, plus file I/O, superglobals, and error handling.
🔄
PM2
Production process manager for Node.js applications with cluster mode, monitoring, log management, startup scripts, and zero-downtime reloads.
💎
Prisma
Complete Prisma ORM cheat sheet — schema, queries, migrations, and CLI, plus relations, aggregations, filtering, and seeding patterns.
🦀
Rust
Comprehensive Rust language cheat sheet covering ownership, traits, pattern matching, structs, enums, error handling, closures, and concurrency.
💅
Sass
Complete Sass/SCSS cheat sheet covering variables, mixins, functions, nesting, extends, maps, and the modern module system.
📺
Screen
GNU Screen terminal multiplexer for persistent sessions, window and split-region management, key bindings, copy mode, and remote work.
✂️
Sed
Stream editor for filtering and transforming text, line by line — substitution, address ranges, hold space, branching, and flags.
⚡
Supabase
Complete Supabase cheat sheet — auth, database, realtime, storage, and edge functions, plus row level security and migrations.
🖥️
Tmux
Terminal multiplexer cheat sheet for managing multiple sessions, windows, and panes from a single terminal, with copy mode and status bar configuration.
📦
TOML
Quick reference for TOML configuration file syntax, types, tables, and common patterns, including arrays of tables and inline tables.
▲
Vercel CLI
Complete Vercel CLI reference for deployment, project management, domains, environment variables, secrets, logs, edge functions, and configuration.
⚡
Vite
Next-generation frontend build tool with instant HMR, native ES modules, plugins, environment variables, library mode, and Rollup-based builds.
📦
Webpack
Module bundler for JavaScript applications — entry/output config, loaders, plugins, code splitting, module resolution, and optimization.
🎯
XPath
Quick reference for XPath expressions, axes, predicates, string functions, node tests, and operators for XML/HTML querying.
📋
YAML
YAML syntax reference covering scalars, collections, anchors, aliases, multi-line strings, nested structures, and common patterns.

📖 Free, searchable command reference. Bookmark this page for quick access.