How to create Public and Private Subnets in Terraform

1 min read 270 words

To create public and private subnets in Terraform, you can use the AWS provider to define your network configuration. Here’s an example configuration that demonstrates how to create public and private subnets within a Virtual Private Cloud (VPC) in AWS:

# Define your AWS provider configuration
provider "aws" {
  region = "us-west-2"  # Update with your desired region
}

# Create the VPC
resource "aws_vpc" "my_vpc" {
  cidr_block = "10.0.0.0/16"  # Update with your desired VPC CIDR block

  tags = {
    Name = "my-vpc"
  }
}

# Create the public subnet
resource "aws_subnet" "public_subnet" {
  vpc_id            = aws_vpc.my_vpc.id
  cidr_block        = "10.0.0.0/24"  # Update with your desired public subnet CIDR block
  availability_zone = "us-west-2a"  # Update with your desired availability zone

  tags = {
    Name = "public-subnet"
  }
}

# Create the private subnet
resource "aws_subnet" "private_subnet" {
  vpc_id            = aws_vpc.my_vpc.id
  cidr_block        = "10.0.1.0/24"  # Update with your desired private subnet CIDR block
  availability_zone = "us-west-2b"  # Update with your desired availability zone

  tags = {
    Name = "private-subnet"
  }
}

In this example, the aws_vpc resource creates a VPC with the specified CIDR block. The aws_subnet resources create the public and private subnets within the VPC, using different CIDR blocks and availability zones.

Make sure you have the AWS CLI configured with appropriate credentials and the required permissions for creating VPCs and subnets. You can then run the Terraform commands (terraform init, terraform plan, and terraform apply) in the directory where you have saved your Terraform configuration files to create the infrastructure.

This example assumes you have already initialized Terraform with the AWS provider and have the necessary plugins installed.

Andrew
Andrew

Andrew is a visionary software engineer and DevOps expert with a proven track record of delivering cutting-edge solutions that drive innovation at Ataiva.com. As a leader on numerous high-profile projects, Andrew brings his exceptional technical expertise and collaborative leadership skills to the table, fostering a culture of agility and excellence within the team. With a passion for architecting scalable systems, automating workflows, and empowering teams, Andrew is a sought-after authority in the field of software development and DevOps.

Tags