DEV Community

Kittipat.po
Kittipat.po

Posted on • Updated on

Terraform CLI Commands Cheat Sheet

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)