summaryrefslogtreecommitdiff
path: root/Terraform/AWS/instance-with-configs/network.tf
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2025-05-01 15:48:15 +0100
committerGitHub <noreply@github.com>2025-05-01 15:48:15 +0100
commitfc9128e33469aea2b65b81589a3e9c9399ddc0c7 (patch)
treef27518abd233c3620122a867a5043ff37fd334b4 /Terraform/AWS/instance-with-configs/network.tf
parent65f456222375c017e45f27dfb283d1d4176e260f (diff)
parentcb2f5c86fd732a2d10a758bc3a90fc4ee33323de (diff)
downloadvyos-automation-fc9128e33469aea2b65b81589a3e9c9399ddc0c7.tar.gz
vyos-automation-fc9128e33469aea2b65b81589a3e9c9399ddc0c7.zip
Merge pull request #5 from aslanvyos/main
Terraform projects for VyOS deployment on AWS
Diffstat (limited to 'Terraform/AWS/instance-with-configs/network.tf')
-rw-r--r--Terraform/AWS/instance-with-configs/network.tf86
1 files changed, 86 insertions, 0 deletions
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