To create a VPC, subnet, Internet Gateway (IG), route table, and security group on AWS using Terraform, you can follow an extended version of the previous example. Here's a step-by-step guide:
Step 1: Initialize Terraform
Create a new directory for your Terraform configuration and initialize it:
mkdir aws-terraform-example
cd aws-terraform-example
Create a file named main.tf
where you'll define your infrastructure.
Step 2: Configure AWS Provider
In main.tf
, configure the AWS provider and region:
provider "aws" {
region = "us-east-1" # Adjust the region as per your preference
}
Step 3: Create a VPC
Define a VPC resource:
resource "aws_vpc" "my_vpc" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "my-vpc"
}
}
Step 4: Create a Subnet
Create a subnet within the VPC:
resource "aws_subnet" "my_subnet" {
vpc_id = aws_vpc.my_vpc.id
cidr_block = "10.0.1.0/24"
availability_zone = "us-east-1a" # Adjust availability zone
tags = {
Name = "my-subnet"
}
}
Step 5: Create an Internet Gateway (IG)
Define an Internet Gateway and attach it to your VPC:
resource "aws_internet_gateway" "my_igw" {
vpc_id = aws_vpc.my_vpc.id
tags = {
Name = "my-igw"
}
}
Step 6: Create a Route Table
Define a route table and associate it with the subnet to enable internet access:
resource "aws_route_table" "my_route_table" {
vpc_id = aws_vpc.my_vpc.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.my_igw.id
}
tags = {
Name = "my-route-table"
}
}
resource "aws_route_table_association" "subnet_association" {
subnet_id = aws_subnet.my_subnet.id
route_table_id = aws_route_table.my_route_table.id
}
Step 7: Define Security Group
Create a security group to control inbound and outbound traffic:
resource "aws_security_group" "my_security_group" {
vpc_id = aws_vpc.my_vpc.id
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "my-security-group"
}
}
Step 8: Terraform Apply
Save main.tf
and run the following commands:
terraform init
terraform
Terraform prompt you to confirm the creation of resources. Type yes
to proceed. Once, Terraform will output information about the created resources.
Summary
This setup will create a VPC (mypc
), a subnet (my_subnet
), an Internet Gateway (my_igw
), a route table (my_route_table
) associated with the subnet, and a security group (my_security_group
) in your AWS account. Adjust the configurations such as region
, cidr_block
, availability_zone
, instance_type
, etc., according to your specific requirements and naming conventions. This structured approach ensures your infrastructure is defined consistently and reproducibly using Terraform.