From cb2f5c86fd732a2d10a758bc3a90fc4ee33323de Mon Sep 17 00:00:00 2001 From: aslanvyos Date: Thu, 31 Oct 2024 10:04:05 +0400 Subject: Add Terraform project for VyOS instance with basic setup and with network services (VPN, NAT, DNS) Added CloudFormation templates for VyOS deployment on AWS --- Terraform/AWS/instance-with-configs/network.tf | 86 ++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 Terraform/AWS/instance-with-configs/network.tf (limited to 'Terraform/AWS/instance-with-configs/network.tf') diff --git a/Terraform/AWS/instance-with-configs/network.tf b/Terraform/AWS/instance-with-configs/network.tf new file mode 100644 index 0000000..b3513f6 --- /dev/null +++ b/Terraform/AWS/instance-with-configs/network.tf @@ -0,0 +1,86 @@ +# VPC + +resource "aws_vpc" "vpc" { + cidr_block = var.vpc_cidr + instance_tenancy = "default" + # enable_dns_support = true # DNS resolution within VPC + # enable_dns_hostnames = true # Public DNS hostnames + + tags = { + Name = "${var.prefix}-${var.vpc_name}" + } +} + +# PUBLIC SUBNET + +resource "aws_subnet" "public_subnet" { + vpc_id = aws_vpc.vpc.id + cidr_block = var.public_subnet_cidr + availability_zone = var.availability_zone + map_public_ip_on_launch = false + + tags = { + Name = "${var.prefix}-${var.vpc_name}-${var.public_subnet_name}" + } + + depends_on = [aws_internet_gateway.igw] +} + +# PRIVATE SUBNET + +resource "aws_subnet" "private_subnet" { + vpc_id = aws_vpc.vpc.id + cidr_block = var.private_subnet_cidr + availability_zone = var.availability_zone + map_public_ip_on_launch = false + + tags = { + Name = "${var.prefix}-${var.vpc_name}-${var.private_subnet_name}" + } +} + +# INTERNET GATEWAY + +resource "aws_internet_gateway" "igw" { + vpc_id = aws_vpc.vpc.id + + tags = { + Name = join("-", [var.prefix, var.igw_name]) + } +} + +# ELASTICS IP FOR VYOS + +resource "aws_eip" "vyos_eip" { + domain = "vpc" + depends_on = [aws_internet_gateway.igw] + + tags = { + Name = join("-", [var.prefix, var.vyos_eip_name]) + } +} + +resource "aws_eip_association" "vyos_eip_association" { + allocation_id = aws_eip.vyos_eip.id + network_interface_id = aws_network_interface.vyos_public_nic.id +} + +# PUBLIC ROUTE TABLE + +resource "aws_route_table" "public_rtb" { + vpc_id = aws_vpc.vpc.id + + route { + cidr_block = "0.0.0.0/0" + gateway_id = aws_internet_gateway.igw.id + } + + tags = { + Name = join("-", [var.prefix, var.public_rtb_name]) + } +} + +resource "aws_route_table_association" "public_rtb_assn" { + subnet_id = aws_subnet.public_subnet.id + route_table_id = aws_route_table.public_rtb.id +} \ No newline at end of file -- cgit v1.2.3