Installing Terraform: A Step-by-Step Guide

Cyberchops
4 min readOct 5, 2023

Terraform is a powerful infrastructure as code (IaC) tool that allows you to define and provision infrastructure efficiently. Whether you’re new to Terraform or need a refresher on the installation process, this guide will walk you through the steps to get Terraform up and running on your system.

Manual Installation

Homebrew on OS X

If you’re using macOS and have Homebrew installed, you can easily install Terraform with a single command

brew install terraform

Chocolatey on Windows

Windows users can take advantage of Chocolatey, a package manager for Windows, to install Terraform:

choco install terraform

Linux OS

On Linux distributions, Terraform can be installed by downloading a pre-compiled binary or compiling it from source.Pre-compiled Binary

1. Visit the [Terraform Downloads](https://www.terraform.io/downloads.html) page and download the appropriate package for your system. Terraform is available for various architectures and operating systems.

2. Once the download is complete, unzip the package. Terraform runs as a single binary named `terraform`. You can safely remove any other files from the package, and Terraform will still function.

Compile from Source

1. Clone the Terraform GitHub repository to your local machine:

git clone https://github.com/hashicorp/terraform.git2. Change to the cloned repository directory:

2. Change to the cloned repository directory:

cd terraform

3. Compile Terraform from source by running:

go install

Verify the Installation

After installing Terraform, it’s essential to verify that it’s correctly set up on your system. Open a terminal and follow these steps:

1. Check if Terraform is in your PATH by printing a colon-separated list of locations:

echo $PATH

2. Move the Terraform binary to one of the listed locations. For example, if it’s currently in your Downloads folder and your PATH includes `/usr/local/bin`, you can use this command:

mv ~/Downloads/terraform /usr/local/bin/

Note: Adjust the paths to match your system configuration.

3. Verify the installation by running the following command:

terraform -help

You should see Terraform’s available subcommands displayed.

Enable Tab Completion

Tab completion can greatly improve your Terraform workflow by providing auto-suggestions for commands and options. To enable tab completion, follow these steps based on your shell:

Bash

1. Create or edit the Bash configuration file (usually `~/.bashrc` or `~/.bash_profile`) using a text editor of your choice.

2. Add the following lines to enable Terraform tab completion:

if [ -f /usr/local/bin/terraform ]; then
complete -C /usr/local/bin/terraform terraform
fi

Make sure to adjust the path to your Terraform binary if it’s different.3. Save the file and either restart your shell or run:

3. Save the file and either restart your shell or run:

source ~/.bashrc

Zsh

  1. Create or edit the Zsh configuration file (`~/.zshrc`) using a text editor.

2. Add the following lines to enable Terraform tab completion:

if [ -f /usr/local/bin/terraform ]; then
autoload -U +X bashcompinit && bashcompinit
complete -o nospace -C /usr/local/bin/terraform terraform
fi

Adjust the path to your Terraform binary if needed.

3. Save the file and either restart your shell or run:

source ~/.zshrc

With tab completion enabled, you can efficiently navigate and interact with Terraform commands.

Quick Start Tutorial

Now that you’ve successfully installed Terraform and enabled tab completion, you’re ready to dive into provisioning infrastructure. Let’s start with a quick tutorial on how to use Terraform to provision an NGINX server using Docker on Mac, Windows, or Linux.

Certainly, you can add the information about Windows and Linux users following a link to install Docker Desktop for Mac. Here’s the updated section:

Docker Desktop for Mac

  1. Download and install [Docker Desktop for Mac](https://www.docker.com/products/docker-desktop).

Windows and Linux users can also follow this [link] for installation instructions specific to their platforms.

2. Start Docker Desktop on your local machine:

open -a Docker

3. Create a directory named `learn-terraform-docker-container` for your Terraform project (you can choose any name you like here) :

mkdir learn-terraform-docker-container

This directory will house the configuration files for your infrastructure.

4. Navigate into the working directory:

cd learn-terraform-docker-container

5. Create a `main.tf ` file

  • To create the main.tf file, you can use a text editor or a command-line text editor like nano or vim. For example, to create it using nano, you can run:
nano main.tf

6. In the working directory and paste the following Terraform configuration into it:

terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~> 3.0.1"
}
}
}

provider "docker" {}

resource "docker_image" "nginx" {
name = "nginx"
keep_locally = false
}

resource "docker_container" "nginx" {
image = docker_image.nginx.image_id
name = "tutorial"

ports {
internal = 80
external = 8000
}
}

7. Initialize the Terraform project to download the Docker provider:

terraform init

8.Provision the NGINX server container with the apply command. When prompted to confirm, type “yes” and press ENTER:

terraform apply

9. Verify the existence of the NGINX container by visiting localhost:8000 in your web browser or running docker ps to see the container:

docker ps

10. To stop and remove the container, run

terraform destroy

Congratulations! You’ve now provisioned and managed an NGINX web server with Terraform. This quick start tutorial showcases Terraform’s capabilities and sets you on a path to efficiently manage infrastructure as code.

Start exploring Terraform further, and unlock its full potential for automating and orchestrating your infrastructure. I hope this is useful to you all. Please like and share.

--

--