Do Ngoc Tuan DuyIn this guide, we will walk through the step-by-step process of installing Terraform and preparing...
In this guide, we will walk through the step-by-step process of installing Terraform and preparing your local environment for infrastructure automation.
# Update package list
sudo apt-get update
# Install required packages
sudo apt-get install -y gnupg software-properties-common wget gpg
# Add HashiCorp GPG key
wget -O- https://apt.releases.hashicorp.com/gpg | 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://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
terraform version
# 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
#Check version
aws --version
# Clean up
rm -rf aws awscliv2.zip
In AWS Console:
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 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 a simple test file with nano test.tf:
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
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