Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/atulkamble/terraform-cheat-sheet

Terraform Commands Cheatsheet © 2021
https://github.com/atulkamble/terraform-cheat-sheet

aws azure cheatsheet cloud cloudnative gcp hashicorp hashicorp-terraform terraform

Last synced: about 3 hours ago
JSON representation

Terraform Commands Cheatsheet © 2021

Awesome Lists containing this project

README

        

### Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. Terraform can manage existing and popular service providers as well as custom in-house solutions.

# [Terraform-Commands-Cheatsheet](https://atulkamble.github.io/Terraform-Commands-Cheatsheet/)
No need to run in terror from Terraform. Close that search engine tab and check out ultimate Terraform Cheatsheet by [Atul Kamble](https://atulkamble.github.io/).

# Terraform Command Lines

- Terraform CLI tricks
```markdown terraform -install-autocomplete``` #Setup tab auto-completion, requires logging back in

### Format and Validate Terraform code
- ```terraform fmt``` #format code per HCL canonical standard
- ```terraform validate``` #validate code for syntax
- ```terraform validate -backend=false``` #validate code skip backend validation

### Initialize your Terraform working directory
- ```terraform init``` #initialize directory, pull down providers
- ```terraform init -get-plugins=false``` #initialize directory, do not download plugins
- ```terraform init -verify-plugins=false``` #initialize directory, do not verify plugins for Hashicorp signature

### Plan, Deploy and Cleanup Infrastructure
- ```terraform apply --auto-approve``` #apply changes without being prompted to enter “yes”
- ```terraform destroy --auto-approve``` #destroy/cleanup deployment without being prompted for “yes”
- ```terraform plan -out plan.out``` #output the deployment plan to plan.out
- ```terraform apply plan.out``` #use the plan.out plan file to deploy infrastructure
- ```terraform plan -destroy``` #outputs a destroy plan
- ```terraform apply -target=aws_instance.my_ec2``` #only apply/deploy changes to the targeted resource
- ```terraform apply -var my_region_variable=us-east-1``` #pass a variable via command-line while applying a configuration
- ```terraform apply -lock=true``` #lock the state file so it can’t be modified by any other Terraform apply or modification action(possible only where backend allows locking)
- ```terraform apply refresh=false``` # do not reconcile state file with real-world resources(helpful with large complex deployments for saving deployment time)
- ```terraform apply --parallelism=5``` #number of simultaneous resource operations
- ```terraform refresh``` #reconcile the state in Terraform state file with real-world resources
- ```terraform providers``` #get information about providers used in current configuration

### Terraform Workspaces
- ```terraform workspace new mynewworkspace``` #create a new workspace
- ```terraform workspace select default``` #change to the selected workspace
- ```terraform workspace list``` #list out all workspaces

### Terraform State Manipulation

- ```terraform state show aws_instance.my_ec2``` #show details stored in Terraform state for the resource
- ```terraform state pull > terraform.tfstate``` #download and output terraform state to a file
- ```terraform state mv aws_iam_role.my_ssm_role module.custom_module``` #move a resource tracked via state to different module
- ```terraform state replace-provider hashicorp/aws registry.custom.com/aws``` #replace an existing provider with another
- ```terraform state list``` #list out all the resources tracked via the current state file
- ```terraform state rm aws_instance.myinstace``` #unmanage a resource, delete it from Terraform state file

### Terraform Import And Outputs
- ```terraform import aws_instance.new_ec2_instance i-abcd1234``` #import EC2 instance with id i-abcd1234 into the Terraform resource named “new_ec2_instance” of type “aws_instance”
- ```terraform import 'aws_instance.new_ec2_instance[0]' i-abcd1234``` #same as above, imports a real-world resource into an instance of Terraform resource
- ```terraform output``` #list all outputs as stated in code
- ```terraform output instance_public_ip``` # list out a specific declared output
- ```terraform output -json``` #list all outputs in JSON format

### Terraform Miscelleneous commands
- ```terraform version``` #display Terraform binary version, also warns if version is old
- ```terraform get -update=true``` #download and update modules in the “root” module.

### Terraform Console(Test out Terraform interpolations)
- ```echo 'join(",",["foo","bar"])' | terraform console``` #echo an expression into terraform console and see its expected result as output
- ```echo '1 + 5' | terraform console``` #Terraform console also has an interactive CLI just enter “terraform console”
- ```echo "aws_instance.my_ec2.public_ip" | terraform console``` #display the Public IP against the “my_ec2” Terraform resource as seen in the Terraform state file

### Terraform Graph(Dependency Graphing)
- ```terraform graph | dot -Tpng > graph.png``` #produce a PNG diagrams showing relationship and dependencies between Terraform resource in your configuration/code

### Terraform Taint/Untaint(mark/unmark resource for recreation -> delete and then recreate)
- ```terraform taint aws_instance.my_ec2``` #taints resource to be recreated on next apply
- ```terraform untaint aws_instance.my_ec2``` #Remove taint from a resource
- ```terraform force-unlock LOCK_ID``` #forcefully unlock a locked state file, LOCK_ID provided when locking the State file beforehand

### Terraform Cloud
- ```terraform login``` #obtain and save API token for Terraform cloud
- ```terraform logout``` #Log out of Terraform Cloud, defaults to hostname app.terraform.io

# Technical Author Profile (Study Guide + Notes):
- [LinkedIn: atuljkamble](https://www.linkedin.com/in/atuljkamble)
- [Twitter: atul_kamble](https://www.twitter.com/atul_kamble)
- [Github: atulkamble](https://www.github.com/atulkamble)
- [Medium: atuljkamble](https://atuljkamble.medium.com/)
- [HashNode: atulkamble](https://hashnode.com/@atulkamble)
- [Dev: atulkamble](https://dev.to/atulkamble)
- [Twitch: atulkamble](https://www.twitch.tv/atulkamble)
- [Kaggle: atuljkamble](https://www.kaggle.com/atuljkamble)
- [GitLab: atulkamble](https://gitlab.com/atulkamble)