# Terraform Configuration for my-project
# Provider: AWS
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
required_version = ">= 1.0"
}
provider "aws" {
region = "us-east-1"
}
locals {
project_name = "my-project"
environment = "production"
common_tags = {
Project = local.project_name
Environment = local.environment
ManagedBy = "Terraform"
}
}
# VPC Configuration
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
enable_dns_hostnames = true
enable_dns_support = true
tags = merge(local.common_tags, {
Name = "${local.project_name}-vpc"
})
}
resource "aws_subnet" "public" {
count = 2
vpc_id = aws_vpc.main.id
cidr_block = "10.0.${count.index + 1}.0/24"
availability_zone = data.aws_availability_zones.available.names[count.index]
map_public_ip_on_launch = true
tags = merge(local.common_tags, {
Name = "${local.project_name}-public-${count.index + 1}"
})
}
resource "aws_internet_gateway" "main" {
vpc_id = aws_vpc.main.id
tags = merge(local.common_tags, {
Name = "${local.project_name}-igw"
})
}
data "aws_availability_zones" "available" {
state = "available"
}
# Outputs
output "project_name" {
value = local.project_name
}
output "vpc_id" {
value = aws_vpc.main.id
}