Terraform is an open-source infrastructure as code software tool that provides a consistent CLI workflow to manage hundreds of cloud services. Terraform codifies cloud APIs into declarative configuration files.
In this tutorial, we are going to learn how to install Terraform on Ubuntu 22.04.
Infrastructure as code (IAC) tools allow you to manage your infrastructure with a configuration file rather than through a graphical interface. IAC allows you to build, change and manage your infrastructure in a safe, consistent, and repeatable way by defining configurations that you can version, reuse and share.
Where do we use Terraform?
Terraform is used in many use cases such as:
- Infrastructure as code. We use Terraform to automate and provision our infrastructure such as servers, databases, firewalls, etc. This helps to accelerate cloud adoption because manual provisioning is always slow and cumbersome.
- Manage network infrastructure. Terraform is used to automate key networking tasks such as updating load balancer member pools.
- For multi-cloud deployments. Terraform helps in deploying serverless functions such as AWS Lambda.
Advantages of Using Terraform
- Terraform can manage infrastructure on multiple cloud platforms.
- The human-readable form helps you write infrastructure code quickly.
- Terraforms state helps you to track resource changes throughout your deployments.
- You can commit your configurations to version control to safely collaborate on infrastructure.
To deploy infrastructure with Terraform you need to understand the following aspects:
- Scope: You need to identify the infrastructure for your project in advance.
- Author: Write the configuration manifest for your infrastructure.
- Initialize: Install all the plugins needed by Terraform to manage your infrastructure.
- Plan: Preview the changes Terraform will make to match your configurations.
- Apply: Make the planned changes to suit your configs
What is good about Terraform is that it keeps track of your infrastructure in a state file. Terraform uses the state file to determine the changes to make in your infrastructure in order to match your configurations.
Install Terraform on Ubuntu 22.04
Before we can install Terraform, make sure your system is up to date, you have GnuPG, software-properties-common, and curl packages installed.
1. Run system updates
Begin by updating your system repositories to make them up to date. Use the following command to run system updates.
sudo apt update && apt upgrade -y
2. Install Terraform Package dependencies
Install the following dependencies, software-properties-common, GnuPG, and curl on your system using the following command.
sudo apt install -y gnupg software-properties-common curl
It will not install any packages because Ubuntu 22.04 comes preinstalled with the following packages. So what you can do is just update them.
3. Add Hashicorp GPG key
Next in line is to add the Hashicorp GPG key into our system. We are going to install using the curl command we installed earlier.
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
4. Add Hashicorp repository to Ubuntu 22.04
Now we need to tell our system where to get installation packages from and that is by adding the Hashicorp repository to our system repositories. To add repositories, we need to use the following command.
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
Check what has been added to your system. See below output
Output Repository: 'deb [arch=amd64] https://apt.releases.hashicorp.com jammy main' Description: Archive for codename: jammy components: main More info: https://apt.releases.hashicorp.com Adding repository. Press [ENTER] to continue or Ctrl-c to cancel. Adding deb entry to /etc/apt/sources.list.d/archive_uri-https_apt_releases_hashicorp_com-jammy.list Adding disabled deb-src entry to /etc/apt/sources.list.d/archive_uri-https_apt_releases_hashicorp_com-jammy.list Get:1 http://mirrors.digitalocean.com/ubuntu jammy InRelease [270 kB] Hit:2 http://mirrors.digitalocean.com/ubuntu jammy-updates InRelease Get:3 https://apt.releases.hashicorp.com jammy InRelease [10.3 kB] Hit:4 http://mirrors.digitalocean.com/ubuntu jammy-backports InRelease Hit:5 https://repos-droplet.digitalocean.com/apt/droplet-agent main InRelease Hit:6 http://security.ubuntu.com/ubuntu jammy-security InRelease Get:7 https://apt.releases.hashicorp.com jammy/main amd64 Packages [57.7 kB] Fetched 338 kB in 7s (48.3 kB/s) Reading package lists... Done
Lastly is to update our system repositories again for changes to take effect.
$ sudo apt update
5. Install Terraform on Ubuntu 22.04
After we have met all the requirements, we can now run terraform installation with ease. Run the following command on your terminal.
$ sudo apt install terraform
The sample output will be like this;
Output Reading package lists... Done Building dependency tree... Done Reading state information... Done The following NEW packages will be installed: terraform 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 19.9 MB of archives. After this operation, 62.9 MB of additional disk space will be used. Get:1 https://apt.releases.hashicorp.com jammy/main amd64 terraform amd64 1.2.3 [19.9 MB] Fetched 19.9 MB in 0s (91.7 MB/s) Selecting previously unselected package terraform. (Reading database ... 93711 files and directories currently installed.) Preparing to unpack .../terraform_1.2.3_amd64.deb ... Unpacking terraform (1.2.3) ... Setting up terraform (1.2.3) ... Scanning processes... Scanning candidates... Scanning linux images...
Now that we have installed Terraform, we can verify the installation with the following command;
$ terraform -help init Usage: terraform [global options] init [options] Initialize a new or existing Terraform working directory by creating initial files, loading any remote state, downloading modules, etc. This is the first command that should be run for any new or existing Terraform configuration per machine. This sets up all the local data necessary to run Terraform that is typically not committed to version control. This command is always safe to run multiple times. Though subsequent runs may give errors, this command will never delete your configuration or state. Even so, if you have important information, please back it up prior to running this command, just in case.
Let’s install a package using Terraform to see if it’s actually working.
First, enable tab autocompletion
$ touch ~/.bashrc
Then install the auto-completion package with the following command;
$ terraform -install-autocomplete
Restart your shell for changes to take effect.
To initialize a project in Terraform we use,
terraform init command
To provision a container, use
terraform apply command
To stop a container use
terraform destroy command
We have successfully installed Terraform on Ubuntu 22.04. Continue learning more about Terraform using Its rich documentation.