DEV Community

Cover image for Installing Terraform and Setting Up Your Environment
Sarvar Nadaf
Sarvar Nadaf

Posted on

Installing Terraform and Setting Up Your Environment

πŸ‘‹ Hey there, tech enthusiasts!

I'm Sarvar, a Cloud Architect with a passion for transforming complex technological challenges into elegant solutions. With extensive experience spanning Cloud Operations (AWS & Azure), Data Operations, Analytics, DevOps, and Generative AI, I've had the privilege of architecting solutions for global enterprises that drive real business impact. Through this article series, I'm excited to share practical insights, best practices, and hands-on experiences from my journey in the tech world. Whether you're a seasoned professional or just starting out, I aim to break down complex concepts into digestible pieces that you can apply in your projects.

Let's dive in and explore the fascinating world of cloud technology together! πŸš€


In this guide, we will walk through the step-by-step process of installing Terraform and preparing your local environment for infrastructure automation.

What You'll Learn

  • Install Terraform on Linux (Ubuntu/Amazon Linux)
  • Install AWS CLI
  • Configure AWS credentials
  • Verify your setup
  • Set up VS Code for Terraform development

Prerequisites

  • A Linux server or local machine (Ubuntu 20.04+ or Amazon Linux 2)
  • AWS account with IAM user credentials
  • Basic command line knowledge

Step 1: Install Terraform

For Ubuntu/Debian

# Update package list
sudo apt-get update

# Install required packages
sudo apt-get install -y gnupg software-properties-common wget

# Add HashiCorp GPG key
wget -O- https://apt.releases.hashicorp.com/gpg | \
gpg --dearmor | \
sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg

# Add HashiCorp repository
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/hashicorp.list

# Update and install Terraform
sudo apt-get update
sudo apt-get install -y terraform
Enter fullscreen mode Exit fullscreen mode

For Amazon Linux 2 (Recommended)

# Install yum-config-manager
sudo yum install -y yum-utils

# Add HashiCorp repository
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo

# Install Terraform
sudo yum -y install terraform
Enter fullscreen mode Exit fullscreen mode

Verify Installation

terraform version
Enter fullscreen mode Exit fullscreen mode

Expected Output:

Terraform v1.14.x
on linux_amd64
Enter fullscreen mode Exit fullscreen mode


Step 2: Install AWS CLI (Recommended)

For Ubuntu/Debian

# Download AWS CLI installer
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

# Install unzip if not present
sudo apt-get install -y unzip

# Unzip the installer
unzip awscliv2.zip

# Run the installer
sudo ./aws/install

# Clean up
rm -rf aws awscliv2.zip
Enter fullscreen mode Exit fullscreen mode

For Amazon Linux 2

# Download and install
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
rm -rf aws awscliv2.zip
Enter fullscreen mode Exit fullscreen mode

Verify Installation

aws --version
Enter fullscreen mode Exit fullscreen mode

Expected Output:

aws-cli/2.x.x Python/3.x.x Linux/x.x.x
Enter fullscreen mode Exit fullscreen mode


Step 3: Create IAM User for Terraform

In AWS Console:

  1. Go to IAM β†’ Users β†’ Create User
  2. Username: terraform (or your preferred name)
  3. Select "Provide user access to the AWS Management Console" (optional)
  4. Attach policies: AdministratorAccess (for learning; use restricted policies in production)
  5. Create user
  6. Go to Security Credentials β†’ Create Access Key
  7. Select "Command Line Interface (CLI)"
  8. Download or copy:
    • Access Key ID
    • Secret Access Key

⚠️ Important: Never share or commit these credentials to version control!


Step 4: Configure AWS Credentials

aws configure
Enter fullscreen mode Exit fullscreen mode

You'll be prompted for:

AWS Access Key ID [None]: <YOUR_ACCESS_KEY_ID>
AWS Secret Access Key [None]: <YOUR_SECRET_ACCESS_KEY>
Default region name [None]: us-east-1 (or your preferred region)
Default output format [None]: json
Enter fullscreen mode Exit fullscreen mode

Verify Configuration

aws sts get-caller-identity
Enter fullscreen mode Exit fullscreen mode

Expected Output:

{
    "UserId": "AIDASRZSGHJSDC6XXXXX",
    "Account": "123456789012",
    "Arn": "arn:aws:iam::123456789012:user/terraform"
}
Enter fullscreen mode Exit fullscreen mode

Step 5: Set Up Your Working Directory

# Create project directory
mkdir -p ~/terraform-projects
cd ~/terraform-projects

# Create your first project folder
mkdir my-first-terraform
cd my-first-terraform
Enter fullscreen mode Exit fullscreen mode


Step 6: (Optional) Install VS Code with Terraform Extension

Install VS Code

# Ubuntu/Debian
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'
sudo apt-get update
sudo apt-get install -y code
Enter fullscreen mode Exit fullscreen mode

Install Terraform Extension

  1. Open VS Code
  2. Go to Extensions (Ctrl+Shift+X)
  3. Search for "HashiCorp Terraform"
  4. Click Install

Extension Features:

  • Syntax highlighting
  • Auto-completion
  • Formatting (terraform fmt)
  • Validation

Step 7: Test Your Setup

Create a simple test file:

cat > test.tf << 'EOF'
terraform {
  required_version = ">= 1.0"
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "us-east-1"
}

# This is just a test - we won't create any resources yet
output "account_id" {
  value = data.aws_caller_identity.current.account_id
}

data "aws_caller_identity" "current" {}
EOF
Enter fullscreen mode Exit fullscreen mode

Run Terraform commands:

# Initialize Terraform
terraform init

# Validate configuration
terraform validate

# See what would happen (no resources created)
terraform plan
Enter fullscreen mode Exit fullscreen mode

Expected Output:

Terraform has been successfully initialized!
Success! The configuration is valid.
Changes to Outputs:
  + account_id = "123456789012"
Enter fullscreen mode Exit fullscreen mode

Clean up test file:

rm test.tf
rm -rf .terraform .terraform.lock.hcl
Enter fullscreen mode Exit fullscreen mode


Troubleshooting Common Issues

Issue 1: "terraform: command not found"

Solution: Add Terraform to PATH or reinstall

Issue 2: "Unable to locate credentials"

Solution: Run aws configure again and verify credentials

Issue 3: "Error: No valid credential sources found"

Solution: Check ~/.aws/credentials file exists and has correct format

Issue 4: Permission denied errors

Solution: Verify IAM user has necessary permissions


What's Next?

In the next article, we'll:

  • Create our first AWS resource (S3 bucket)
  • Understand Terraform workflow (init, plan, apply, destroy)
  • Learn about Terraform state
  • Explore basic Terraform syntax

Key Takeaways

βœ… Terraform is installed and working
βœ… AWS CLI is configured with credentials
βœ… You can verify your AWS identity
βœ… Your development environment is ready
βœ… You understand the basic Terraform commands


Additional Resources


Next Article: Part 3: Provisioning Your First AWS Resource


πŸ“Œ Wrapping Up

Thank you for reading. I hope this article provided practical insights and a clearer understanding of the topic.

If you found this useful:

  • ❀️ Like if it added value
  • πŸ¦„ Unicorn if you’re applying it today
  • πŸ’Ύ Save it for your next optimization session
  • πŸ”„ Share it with your team

πŸ’‘ What’s Next

More deep dives are coming soon on:

  • Cloud Operations
  • GenAI & Agentic AI
  • DevOps Automation
  • Data & Platform Engineering

Follow along for weekly insights and hands-on guides.


🌐 Portfolio & Work

You can explore my full body of work, certifications, architecture projects, and technical articles here:

πŸ‘‰ Visit My Website


πŸ› οΈ Services I Offer

If you're looking for hands-on guidance or collaboration, I provide:

  • Cloud Architecture Consulting (AWS / Azure)
  • DevSecOps & Automation Design
  • FinOps Optimization Reviews
  • Technical Writing (Cloud, DevOps, GenAI)
  • Product & Architecture Reviews
  • Mentorship & 1:1 Technical Guidance

🀝 Let’s Connect

I’d love to hear your thoughts. Feel free to drop a comment or connect with me on:

πŸ”— LinkedIn

For collaborations, consulting, or technical discussions, reach out at:

πŸ“§ simplynadaf@gmail.com


Found this helpful? Share it with your team.

⭐ Star the repo β€’ πŸ“– Follow the series β€’ πŸ’¬ Ask questions

Made by Sarvar Nadaf

🌐 https://sarvarnadaf.com

Top comments (0)