# 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 # Add HashiCorp GPG key
-weight: 500;">wget -O- https://-weight: 500;">apt.releases.hashicorp.com/gpg | \
gpg --dearmor | \
-weight: 600;">sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg # 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 # Add HashiCorp GPG key
-weight: 500;">wget -O- https://-weight: 500;">apt.releases.hashicorp.com/gpg | \
gpg --dearmor | \
-weight: 600;">sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg # 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 # Add HashiCorp GPG key
-weight: 500;">wget -O- https://-weight: 500;">apt.releases.hashicorp.com/gpg | \
gpg --dearmor | \
-weight: 600;">sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg # 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
# Install -weight: 500;">yum-config-manager
-weight: 600;">sudo -weight: 500;">yum -weight: 500;">install -y -weight: 500;">yum-utils # Add HashiCorp repository
-weight: 600;">sudo -weight: 500;">yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo # Install Terraform
-weight: 600;">sudo -weight: 500;">yum -y -weight: 500;">install terraform
# Install -weight: 500;">yum-config-manager
-weight: 600;">sudo -weight: 500;">yum -weight: 500;">install -y -weight: 500;">yum-utils # Add HashiCorp repository
-weight: 600;">sudo -weight: 500;">yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo # Install Terraform
-weight: 600;">sudo -weight: 500;">yum -y -weight: 500;">install terraform
# Install -weight: 500;">yum-config-manager
-weight: 600;">sudo -weight: 500;">yum -weight: 500;">install -y -weight: 500;">yum-utils # Add HashiCorp repository
-weight: 600;">sudo -weight: 500;">yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo # Install Terraform
-weight: 600;">sudo -weight: 500;">yum -y -weight: 500;">install terraform
terraform version
terraform version
terraform version
Terraform v1.14.x
on linux_amd64
Terraform v1.14.x
on linux_amd64
Terraform v1.14.x
on linux_amd64
# 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 # 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 # 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 # Clean up
rm -rf aws awscliv2.zip
# Download and -weight: 500;">install
-weight: 500;">curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
-weight: 600;">sudo ./aws/-weight: 500;">install
rm -rf aws awscliv2.zip
# Download and -weight: 500;">install
-weight: 500;">curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
-weight: 600;">sudo ./aws/-weight: 500;">install
rm -rf aws awscliv2.zip
# Download and -weight: 500;">install
-weight: 500;">curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
-weight: 600;">sudo ./aws/-weight: 500;">install
rm -rf aws awscliv2.zip
aws --version
aws --version
aws --version
aws-cli/2.x.x Python/3.x.x Linux/x.x.x
aws-cli/2.x.x Python/3.x.x Linux/x.x.x
aws-cli/2.x.x Python/3.x.x Linux/x.x.x
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]: us-east-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]: us-east-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]: us-east-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
{ "UserId": "AIDASRZSGHJSDC6XXXXX", "Account": "123456789012", "Arn": "arn:aws:iam::123456789012:user/terraform"
}
{ "UserId": "AIDASRZSGHJSDC6XXXXX", "Account": "123456789012", "Arn": "arn:aws:iam::123456789012:user/terraform"
}
{ "UserId": "AIDASRZSGHJSDC6XXXXX", "Account": "123456789012", "Arn": "arn:aws:iam::123456789012:user/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
# Create project directory
mkdir -p ~/terraform-projects
cd ~/terraform-projects # Create your first project folder
mkdir my-first-terraform
cd my-first-terraform
# Ubuntu/Debian
-weight: 500;">wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
-weight: 600;">sudo -weight: 500;">install -D -o root -g root -m 644 packages.microsoft.gpg /etc/-weight: 500;">apt/keyrings/packages.microsoft.gpg
-weight: 600;">sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/-weight: 500;">apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/-weight: 500;">apt/sources.list.d/vscode.list'
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">update
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">install -y code
# Ubuntu/Debian
-weight: 500;">wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
-weight: 600;">sudo -weight: 500;">install -D -o root -g root -m 644 packages.microsoft.gpg /etc/-weight: 500;">apt/keyrings/packages.microsoft.gpg
-weight: 600;">sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/-weight: 500;">apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/-weight: 500;">apt/sources.list.d/vscode.list'
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">update
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">install -y code
# Ubuntu/Debian
-weight: 500;">wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
-weight: 600;">sudo -weight: 500;">install -D -o root -g root -m 644 packages.microsoft.gpg /etc/-weight: 500;">apt/keyrings/packages.microsoft.gpg
-weight: 600;">sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/-weight: 500;">apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/-weight: 500;">apt/sources.list.d/vscode.list'
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">update
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">install -y code
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
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
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
# 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 = "123456789012"
Terraform has been successfully initialized!
Success! The configuration is valid.
Changes to Outputs: + account_id = "123456789012"
Terraform has been successfully initialized!
Success! The configuration is valid.
Changes to Outputs: + account_id = "123456789012"
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 (Ubuntu/Amazon Linux)
- Install AWS CLI
- Configure AWS credentials
- Verify your setup
- Set up VS Code for Terraform development - A Linux server or local machine (Ubuntu 20.04+ or Amazon Linux 2)
- AWS account with IAM user credentials
- Basic command line knowledge - 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
- Access Key ID
- Secret Access Key - Access Key ID
- Secret Access Key - Open VS Code
- Go to Extensions (Ctrl+Shift+X)
- Search for "HashiCorp Terraform"
- Click Install - Syntax highlighting
- Auto-completion
- Formatting (terraform fmt) - Create our first AWS resource (S3 bucket)
- Understand Terraform workflow (init, plan, apply, destroy)
- Learn about Terraform state
- Explore basic Terraform syntax - Terraform Documentation
- AWS CLI Documentation
- Terraform AWS Provider - β€οΈ Like if it added value
- π¦ Unicorn if youβre applying it today
- πΎ Save it for your next optimization session
- π Share it with your team - Cloud Operations
- GenAI & Agentic AI
- DevOps Automation
- Data & Platform Engineering - Cloud Architecture Consulting (AWS / Azure)
- DevSecOps & Automation Design
- FinOps Optimization Reviews
- Technical Writing (Cloud, DevOps, GenAI)
- Product & Architecture Reviews
- Mentorship & 1:1 Technical Guidance