Tools: Latest: Installing Terraform and Setting Up EC2 Environment for Ubuntu24.04
What You'll Learn
Step 1: Install Terraform
Verify Installation
Expected Output
Step 2: Install AWS CLI (Recommended)
Step 3: Create IAM User for Terraform
Step 4: Configure AWS Credentials
You'll be prompted for:
Verify Configuration
Step 5: Set Up Your Working Directory
Step 6: Test Your Setup
Run Terraform commands:
Expected Output:
Clean up test file: In this guide, we will walk through the step-by-step process of installing Terraform and preparing your local environment for infrastructure automation. Create a simple test file with nano test.tf: Templates let you quickly answer FAQs or store snippets for re-use. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse
# Update package list
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">update # Install required packages
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">install -y gnupg software-properties-common -weight: 500;">wget gpg # Add HashiCorp GPG key
-weight: 500;">wget -O- https://-weight: 500;">apt.releases.hashicorp.com/gpg | -weight: 600;">sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
gpg --no-default-keyring --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg --fingerprint # Add HashiCorp repository
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
https://-weight: 500;">apt.releases.hashicorp.com $(lsb_release -cs) main" | \
-weight: 600;">sudo tee /etc/-weight: 500;">apt/sources.list.d/hashicorp.list # Update and -weight: 500;">install Terraform
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">update
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">install -y terraform
# Update package list
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">update # Install required packages
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">install -y gnupg software-properties-common -weight: 500;">wget gpg # Add HashiCorp GPG key
-weight: 500;">wget -O- https://-weight: 500;">apt.releases.hashicorp.com/gpg | -weight: 600;">sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
gpg --no-default-keyring --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg --fingerprint # Add HashiCorp repository
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
https://-weight: 500;">apt.releases.hashicorp.com $(lsb_release -cs) main" | \
-weight: 600;">sudo tee /etc/-weight: 500;">apt/sources.list.d/hashicorp.list # Update and -weight: 500;">install Terraform
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">update
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">install -y terraform
# Update package list
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">update # Install required packages
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">install -y gnupg software-properties-common -weight: 500;">wget gpg # Add HashiCorp GPG key
-weight: 500;">wget -O- https://-weight: 500;">apt.releases.hashicorp.com/gpg | -weight: 600;">sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
gpg --no-default-keyring --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg --fingerprint # Add HashiCorp repository
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
https://-weight: 500;">apt.releases.hashicorp.com $(lsb_release -cs) main" | \
-weight: 600;">sudo tee /etc/-weight: 500;">apt/sources.list.d/hashicorp.list # Update and -weight: 500;">install Terraform
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">update
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">install -y terraform
terraform version
terraform version
terraform version
# Download AWS CLI installer
-weight: 500;">curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" # Install unzip if not present
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">install -y unzip # Unzip the installer
unzip awscliv2.zip # Run the installer
-weight: 600;">sudo ./aws/-weight: 500;">install #Check version
aws --version # Clean up
rm -rf aws awscliv2.zip
# Download AWS CLI installer
-weight: 500;">curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" # Install unzip if not present
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">install -y unzip # Unzip the installer
unzip awscliv2.zip # Run the installer
-weight: 600;">sudo ./aws/-weight: 500;">install #Check version
aws --version # Clean up
rm -rf aws awscliv2.zip
# Download AWS CLI installer
-weight: 500;">curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" # Install unzip if not present
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">install -y unzip # Unzip the installer
unzip awscliv2.zip # Run the installer
-weight: 600;">sudo ./aws/-weight: 500;">install #Check version
aws --version # Clean up
rm -rf aws awscliv2.zip
aws configure
aws configure
aws configure
AWS Access Key ID [None]: <YOUR_ACCESS_KEY_ID>
AWS Secret Access Key [None]: <YOUR_SECRET_ACCESS_KEY>
Default region name [None]: ap-southeast-1 (or your preferred region)
Default output format [None]: json
AWS Access Key ID [None]: <YOUR_ACCESS_KEY_ID>
AWS Secret Access Key [None]: <YOUR_SECRET_ACCESS_KEY>
Default region name [None]: ap-southeast-1 (or your preferred region)
Default output format [None]: json
AWS Access Key ID [None]: <YOUR_ACCESS_KEY_ID>
AWS Secret Access Key [None]: <YOUR_SECRET_ACCESS_KEY>
Default region name [None]: ap-southeast-1 (or your preferred region)
Default output format [None]: json
aws sts get-caller-identity
aws sts get-caller-identity
aws sts get-caller-identity
# Create project directory
mkdir -p ~/terraform-projects
cd ~/terraform-projects # Create your first project folder
mkdir my-first-terraform
cd my-first-terraform
# Create project directory
mkdir -p ~/terraform-projects
cd ~/terraform-projects # Create your first project folder
mkdir my-first-terraform
cd my-first-terraform
# Create project directory
mkdir -p ~/terraform-projects
cd ~/terraform-projects # Create your first project folder
mkdir my-first-terraform
cd my-first-terraform
terraform { required_version = ">= 1.0" required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" } }
} provider "aws" { region = "ap-southeast-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" {}
terraform { required_version = ">= 1.0" required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" } }
} provider "aws" { region = "ap-southeast-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" {}
terraform { required_version = ">= 1.0" required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" } }
} provider "aws" { region = "ap-southeast-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" {}
# Initialize Terraform
terraform init # Validate configuration
terraform validate # See what would happen (no resources created)
terraform plan
# Initialize Terraform
terraform init # Validate configuration
terraform validate # See what would happen (no resources created)
terraform plan
# Initialize Terraform
terraform init # Validate configuration
terraform validate # See what would happen (no resources created)
terraform plan
Terraform has been successfully initialized!
Success! The configuration is valid.
Changes to Outputs: + account_id = "300374333197"
Terraform has been successfully initialized!
Success! The configuration is valid.
Changes to Outputs: + account_id = "300374333197"
Terraform has been successfully initialized!
Success! The configuration is valid.
Changes to Outputs: + account_id = "300374333197"
rm test.tf
rm -rf .terraform .terraform.lock.hcl
rm test.tf
rm -rf .terraform .terraform.lock.hcl
rm test.tf
rm -rf .terraform .terraform.lock.hcl - Install Terraform on Linux
- Install AWS CLI
- Configure AWS credentials
- Verify your setup
- Set up VS Code for Terraform development - Go to IAM → Users → Create User
- Username: terraform (or your preferred name)
- Select "Provide user access to the AWS Management Console" (optional)
- Attach policies: AdministratorAccess (for learning; use restricted policies in production)
- Create user
- Go to Security Credentials → Create Access Key
- Select "Command Line Interface (CLI)"
- Download or copy:
- Access Key ID
- Secret Access Key