Terraform Cheat Sheet
From
- https://nicwortel.nl/cheat-sheets?ref=Terraform+Cheat+Sheet
- https://developer.hashicorp.com/terraform/cli/commands
Installation
See https://developer.hashicorp.com/terraform/downloads.
Then run terraform -install-autocomplete to enable shell autocompletion.
Initializing Terraform
Command | Description |
---|---|
terraform init |
Prepare your working directory for other commands |
terraform init -upgrade |
Upgrade modules/providers to the latest allowed versions |
terraform get |
Download and install modules |
Provisioning Infrastructure
Command | Description |
---|---|
terraform plan |
Show changes required by the current configuration |
terraform plan -out=<file> |
Write the plan to a file to apply it later |
terraform plan -target <res1> -target <res2> |
Create a plan for the specific resource(s) |
terraform plan -replace <resource> |
Force the plan to replace a specific resource |
terraform plan -var '<key>=<value>' |
Set a value for one of the input variables |
terraform plan -refresh-only |
Inspect resource drift without updating the state file |
terraform apply |
Create or update infrastructure |
terraform apply <file> |
Create or update infrastructure using a plan file |
terraform apply -target <resource> |
Create or update a specific resource |
terraform apply -replace <resource> |
Force the replacement of a specific resource |
terraform apply -auto-approve |
Skip interactive approval of plan before applying |
terraform destroy |
Destroy the infrastructure managed by Terraform |
terraform destroy -target <resource> |
Destroy a specific resource |
Inspecting Infrastructure
Command | Description |
---|---|
terraform output |
Show all the output values |
terraform output -json |
Show all output values in JSON format |
terraform output <name> |
Show a specific output value |
terraform output -raw <name> |
Show a specific output value without quotes |
terraform show |
Show the current state in human-readable form |
terraform show -no-color >file.txt |
Save into a file |
terraform show <file> |
Show a human-readable state or plan file |
terraform show -json <file> |
Show a state or plan file in JSON format |
Managing state
Command | Description |
---|---|
terraform state list |
List all the resources in the state file |
terraform state show <resource> |
Show details about a resource |
terraform state mv <source> <dest> |
Rename a resource in the state file |
terraform state rm <resource> |
Remove a resource from the state file |
terraform state replace-provider <from> <to> |
Replace provider for resources in the state |
terraform import <resource> <remote_id> |
Import the existing infrastructure |
terraform state pull |
Pull current state and output to stdout |
terraform refresh |
(Deprecated) Update state to match reality |
Formatting and validation
Command | Description |
---|---|
terraform validate |
Check whether the configuration is valid |
terraform fmt |
Reformat your configuration in the standard style |
terraform fmt -check |
Check whether the configuration is formatted correctly, return non-zero exit code if not |
Other commands
Command|Description
——-|———–
terraform providers
|Show the providers required for this configuration
terraform force-unlock <lock-id>
|Release a stuck lock
terraform console
|Try Terraform expressions at an interactive prompt
terraform graph \| dot -Tpng > graph.png
|Outputs a dot-formatted graph which can be viewed with graphviz
terraform version
|Show the current Terraform version
terraform -help
|Show help output for Terraform
terraform -help <command>
|Show help output for a specific Terraform command
Environment Variables
Most relevant:
export TF_LOG=TRACE
Acceptable options:
- TRACE
- DEBUG
- INFO
- WARN
- ERROR
- JSON - outputs logs at the TRACE level or higher, and uses a parseable JSON encoding as the formatting.
Makefile
Example terraform Makefile.
Missing assert
https://github.com/ahl/terrassert/