Originally published at pbhadani.com
Learn to setup Terraform on your workstation in this step-by-step guide.
What is Terraform?
Terraform is an open-source tool allows to build, change and version our infrastructure in an easy and efficient way.
It uses declarative language HCL (Hashicorp Configuration Language) to define infrastructure as code.
Terraform concepts
Let's quickly learn about some concepts in Terraform.
Providers
Terraform Providers enables interaction with APIs and handle authentication of different IaaS(e.g. Google Cloud Platform, Amazon Web Service, Azure) or SaaS(e.g. Cloudflare). There are many Terraform supported providers already available and a full list can be seen here.Resource
Terraform Resource is a very important component. Each resource block describes the infrastructure object(e.g. VM instance, Storage buckets, DNS records, Cloud NAT).Modules
Terraform modules are the collection of resources defined in a way that can be reused.Data Sources
Terraform Data Sources help to read infrastructure which is created using (or without using) Terraform.State
Terraform State stores information about the infrastructure created by Terraform code. It is used by Terraform to detect changes in the resources defined in the code.
Terraform state is stored on local machine by default in the name of terraform.tfstate but can be stored remotely on systems like Google Cloud Storage(GCS), AWS S3.
Let's setup Terraform
Below steps are for Linux based system. For MAC, download the relevant package and the rest of the steps should be the same.
-
Download the latest terraform package from terraform.io/downloads.
export TF_VERSION=0.12.16 wget https://releases.hashicorp.com/terraform/${TF_VERSION}/terraform_${TF_VERSION}_linux_amd64.zip -O /tmp/terraform.zip
-
Unzip the terraform binary to a directory which is included in your system
PATH
.
sudo unzip /tmp/terraform.zip -d /usr/local/bin/
-
Reload your shell.
exec -l $SHELL
-
Verify installation.
terraform --help
Below is the terminal recording:
Hope this blog help you get started quickly with Terraform.
Top comments (2)
If you are on a Mac,
chtf
makes life a lot more fun when working with terraform: github.com/Yleisradio/homebrew-ter...it might not matter as much your first day, but as time goes on; being able to quickly switch your terraform version to a supported one for your project is critical to saving time and frustrations.
sometimes it is frustrating to switch terraform version when you have multiple repos with different version.
I have been using github.com/tfutils/tfenv to switch terraform version.
I will give a try to chtf. THanks for the link.