Terraform Commands Explained – Essential & Powerful
Terraform commands are the backbone of infrastructure automation using HashiCorp’s Terraform. Whether you’re writing your first .tf file or managing multi-cloud infrastructure, understanding key Terraform commands can drastically improve your efficiency, accuracy, and confidence in deploying infrastructure-as-code (IaC).
In this tutorial, we’ll break down the most essential Terraform commands, show how and when to use them, and help you avoid common pitfalls—all in a format that’s digestible for both beginners and experienced DevOps professionals.
Terraform Validate – Catch Errors Early
Before executing plans, use the terraform validate command to ensure your configuration syntax is correct.
This command checks the .tf files in your working directory and flags any mistakes in structure or usage. For example, if you’ve used a wrong argument name in a resource block, this command will catch it before any changes are made.
Using terraform validate regularly helps you write cleaner code and prevents runtime errors, saving time during the apply phase.
Terraform Fmt – Standardize Code Formatting
Code consistency is vital, especially when working in teams. The terraform fmt (short for format) command automatically formats your configuration files.
It ensures your .tf files follow a canonical format. Running this after editing files helps keep your code readable, standardized, and version-control friendly.
You can use it like this:
terraform fmt
Any changed files will be shown in the output.
Terraform Show – View the Current State
Want to inspect what Terraform currently knows about your deployed infrastructure? Use terraform show.
This command prints the most up-to-date snapshot of your infrastructure from the .tfstate file. You’ll see attributes such as resource names, file contents, and IDs.
Use -json for a machine-readable format suitable for integrations and automation tools:
terraform show -json
Terraform Providers – Inspect Dependencies
To see all providers used within your configuration, the terraform providers command is your go-to tool. It lists out the source of each provider and where it’s used.
If needed, you can also mirror provider plugins to a custom location using the mirror subcommand, which is useful in air-gapped environments.
Terraform Output – Print Output Values
After applying your configuration, if you’ve defined output variables, you can retrieve them using terraform output.
For example:
terraform output
This command lists all output variables.
To get the value of a specific variable:
terraform output <variable_name>
This makes it easier to reference important values like IP addresses or instance IDs in scripts or automation tools.
Terraform Refresh – Sync With Real Infrastructure
Infrastructure changes can happen outside of Terraform. When that happens, the terraform refresh command helps align the Terraform state file with the actual infrastructure.
This command updates the local state to match the real-world state but does not make changes to resources. Instead, it prepares Terraform for accurate future planning and applying.
terraform plan -refresh=false
This option is handy when performance is a concern or when you want to avoid unnecessary state refreshes.
Terraform Graph – Visualize Dependencies
Understanding dependencies between resources is easier with terraform graph. It generates a DOT format graph of the dependency tree.
This command is particularly useful when debugging or optimizing large configurations. Use tools like Graphviz to convert DOT files into readable visuals:
terraform graph | dot -Tpng > graph.png
You can then open the generated image in a browser to explore your resource structure visually.
Bonus: Common Terraform Commands Recap
Here’s a handy summary of must-know Terraform commands:
Command
Purpose
terraform init
Initializes the working directory
terraform plan
Shows an execution plan before applying changes
terraform apply
Applies changes to infrastructure
terraform destroy
Deletes all resources defined in configuration
terraform validate
Checks configuration for syntax errors
terraform fmt
Formats .tf files consistently
terraform show
Displays current state of infrastructure
terraform output
Prints output variables
terraform refresh
Updates state file to match real-world state
terraform graph
Creates a visual resource dependency graph
Conclusion
Mastering Terraform commands is essential to becoming proficient in managing infrastructure as code. From validating syntax to syncing with real-world resources and visualizing dependencies, these commands empower you to control every stage of the Terraform lifecycle.
Start integrating these commands into your workflow to boost productivity, maintain cleaner configurations, and ensure reliable infrastructure provisioning.
Frequently Asked Questions (FAQs)
1. What is the use of the terraform validate command?
It checks your configuration files for syntax errors before execution, preventing unnecessary failures.
2. How do I format my .tf files automatically?
Use terraform fmt to standardize the formatting of all Terraform configuration files in your working directory.
3. Can I skip state refresh during planning?
4. How do I visualize Terraform dependencies?
Use terraform graph and tools like Graphviz to convert the output into graphical diagrams.
5. What’s the benefit of terraform output?
It provides easy access to output variables like resource IDs, which can be used in automation or manual tasks.