Introduction
In addition to understanding the basics of Terraform configuration, it's helpful to familiarize yourself with common Terraform CLI commands and shortcuts. This Terraform Cheat Sheet provides a quick reference for commonly used commands and flags.
Initialize infrastructure
terraform init
In order to prepare the working directory for use with Terraform, the terraform init command performs Backend Initialization, Child Module Installation, and Plugin Installation.
Command |
Description |
terraform init |
Initialize a working directory |
terraform init -input=true |
Ask for input if necessary |
terraform init -get-plugins=false |
Initialize the working directory, do not download plugins |
terraform init -lock=false |
Disable locking of state |
terraform init -verify-plugins=false |
Initialize the working directory, do not verify plugins for Hashicorp signature |
Download and Install Modules
Note this is usually not required as this is part of the terraform init command.
Command |
Description |
terraform get |
Download and installs modules needed for the configuration |
terraform get -update |
Modules already downloaded will be checked for updates and updated |
Format and validate Terraform Code
Command |
Description |
terraform fmt |
Format your Terraform configuration files using the HCL language standard |
terraform fmt --recursive |
Also format files in subdirectories |
terraform fmt --check |
Useful in automation CI/CD pipelines, the check flag can be used to ensure the configuration files are formatted correctly, if not the exit status will be non-zero. If files are formatted correctly, the exit status will be zero |
terraform validate |
Validate the configuration files in your directory |
Provision infrastructure
Command |
Description |
terraform plan |
Plan will generate an execution plan, showing you what actions will be taken without actually performing the planned actions |
terraform plan -out=<path> |
Save the plan file to a given path. Can then be passed to the terraform apply command |
terraform plan -destroy |
Create a plan to destroy all objects rather than the usual actions |
terraform apply |
Create or update infrastructure depending on the configuration files. By default, a plan will be generated first and will need to be approved before it is applied |
terraform apply -auto-approve |
Apply changes without having to interactively type ‘yes’ to the plan. Useful in automation CI/CD pipelines |
terraform apply <planfilename> |
Provide the file generated using the terraform plan -out command. If provided, Terraform will take the actions in the plan without any confirmation prompts |
terraform apply -lock=false |
Do not hold a state lock during the Terraform apply operation. Use with caution if other engineers might run concurrent commands against the same workspace |
terraform apply -var="environment=dev" |
Pass in a variable value |
terraform apply -var-file="varfile.tfvars" |
Pass in variables contained in a file |
terraform apply -target="module.appgw.0" |
Apply changes only to the targeted resource |
terraform destroy |
Destroy the infrastructure managed by Terraform |
terraform destroy -target="module.appgw.0" |
Destroy only the targeted resource |
terraform destroy --auto-approve |
Destroy the infrastructure without having to interactively type ‘yes’ to the plan. Useful in automation CI/CD pipelines |
Inspect Infrastructure
Command |
Description |
terraform graph |
Creates a resource graph listing all resources in your configuration and their dependencies |
terraform output |
List all the outputs for the root module |
terraform output -json |
List all the outputs in JSON format |
terraform show |
Show the state file in a human-readable format |
State Manipulation
Command |
Description |
terraform state list |
Lists out all the resources that are tracked in the current state file |
terraform state mv |
Move an item in the state, for example, this is useful when you need to tell Terraform that an item has been renamed, e.g. terraform state mv vm1.oldname vm1.newname
|
terraform state pull > state.tfstate |
Get the current state and outputs it to a local file |
terraform state push |
Update remote state from the local state file |
terraform state rm |
Remove the specified instance from the state file. Useful when a resource has been manually deleted outside of Terraform |
terraform state show <resourcename> |
Show the specified resource in the state file |
Reference
Top comments (0)