Есть вопросы?
Закажите звонок специалиста!
Есть вопросы?
Закажите звонок специалиста!
Виртуальная сеть у каждого из облачных провайдеров (AWS, AZURE , GCP) настраивается по-разному, но принцип очень похож. Мы рассмотрим создание виртуальной сети на основе Amazon VPC.
Amazon Virtual Private Cloud – это логически изолированный раздел облака AWS, в котором можно запускать ресурсы AWS в созданной пользователем виртуальной сети. Полностью можно контролировать свою среду виртуальной сети: выбирать собственный диапазон IP-адресов, создавать подсети, настраивать таблицы маршрутизации и сетевые шлюзы.
Создаем файл variables.tf. В нем мы прописываем наши переменные:
variable "aws_region" { default = "eu-central-1" } variable "vpc_cidr" { description = " all subnets” default = "10.20.0.0/16" } variable "vpc_cidr_public" { description = "Public subnet" default = "10.20.0.0/24" } variable "vpc_cidr_private" { description = “Private subnet" default = "10.20.1.0/24" }
aws_region - регион где будут находится сети.
vpc_cidr - это все адреса, которые мы можем использовать в нашей VPC.
vpc_cidr_public - подсеть для публичных сервисов (ssh-jump, proxy, балансировщик).
vpc_cidr_private - подсеть для внутренних сервисов (воркеров, БД и т.п.).
Создаем файл vpc.tf и вписываем следующий код:
resource "aws_vpc" "DemoVPC" { cidr_block = var.vpc_cidr enable_dns_hostnames = true tags { Name = "DemoVPC", } }
В cidr_block мы указываем переменную из variables.tf vpc_cidr.
Далее описываем конфигурацию сети для доступа из сети интернет, а также между сетями. Добавляем далее:
## Public resource "aws_subnet" "demo-subnet-public" { vpc_id = aws_vpc.DemoVPC.id cidr_block = var.vpc_cidr_public availability_zone = var.aws_region}a" tags = { Name = "Public network" } } ## Private resource "aws_subnet" "demo-subnet-private" { vpc_id = aws_vpc.DemoVPC.id cidr_block = var.vpc_cidr_private availability_zone = var.aws_region}b" tags = { Name = "Private network" } }
Здесь мы создаем две подсети demo-subnet-public и demo-subnet-private в зонах доступности a и b нашего региона.
Создадим шлюз:
#Internet GW resource "aws_internet_gateway" "DemoGW" { vpc_id = aws_vpc.DemoVPC.id } #Elastic IP for GW resource "aws_eip" "DemoEIP" { vpc = true depends_on = ["aws_internet_gateway.DemoGW"] } #NAT gateway resource "aws_nat_gateway" "DemoNatGW" { allocation_id = aws_eip.DemoEIP.id subnet_id = aws_subnet.demo-subnet-public.id depends_on = ["aws_internet_gateway.DemoGW"] } #Output output "GW_IP" { value = aws_eip.DemoEIP.public_ip }
Вставляем следующий код:
#Default route to Internet resource "aws_route" "internet_access" { route_table_id = aws_vpc.DemoVPC.main_route_table_id destination_cidr_block = "0.0.0.0/0" gateway_id = aws_internet_gateway.DemoGW.id } #Routing table for private subnet resource "aws_route_table" "private" { vpc_id = aws_vpc.DemoVPC.id } resource "aws_route" "private_route" { route_table_id = aws_route_table.private.id destination_cidr_block = "0.0.0.0/0" nat_gateway_id = aws_nat_gateway.DemoNatGW.id } #Routing table for public subnet resource "aws_route_table" "public" { vpc_id = aws_vpc.DemoVPC.id route { cidr_block = "0.0.0.0/0" gateway_id = aws_internet_gateway.DemoGW.id } } #Associate public subnet to public route table resource "aws_route_table_association" "public_subnet_association" { subnet_id = aws_subnet.demo-subnet-public.id route_table_id = aws_vpc.DemoVPC.main_route_table_id } #Associate private subnet to private route table resource "aws_route_table_association" "private_subnet_association" { subnet_id = aws_subnet.demo-subnet-private.id route_table_id = aws_route_table.private_route_table.id }
На этом подготовка конфигурации закончена. Далее необходимо выполнить #terraform plan и #terraform apply из консоли в папке проекта.
После выполнения - в аккаунте AWS будет создана новая VPC с подсетями, которые мы указали.
Нужно администрирование сервисов AWS? Обращайтесь к нам!