Создание подсетей в AWS VPC с помощью Terraform
Cloud / Terraform 21-09-2025, 21:29 sobir 103 0
В предыдущей статье мы создали в AWS виртуальное частное облако — VPC. Теперь перейдём к следующему шагу — настройке подсетей.
1. Создадим новый файл network.tf, в котором опишем создание подсетей и их привязку к таблице маршрутизации
resource "aws_subnet" "subnet" {
for_each = var.subnets
vpc_id = aws_vpc.vpc.id
cidr_block = each.value.cidr
map_public_ip_on_launch = each.value.publicipv4
availability_zone = "${var.aws_region}${each.value.availability_zone}"
tags = merge({
Name = "${var.contour_environment["region"]}-${lower(var.contour_environment["company"])}-${each.key}-${split(".", each.value.cidr)[2]}"
}, each.value.tags)
}
resource "aws_route_table_association" "rt-association" {
for_each = var.subnets
subnet_id = aws_subnet.subnet[each.key].id
route_table_id = aws_route_table.public.id
}
2. В существующий файл network_core.tf добавим создание ресурсов для интернет-шлюза и таблицы маршрутизации.
Пояснение:
Интернет-шлюз позволит подсетям выходить во внешнюю сеть Интернет, а таблица маршрутизации будет направлять весь трафик (0.0.0.0/0) через этот шлюз.
# Create Internet gateway
resource "aws_internet_gateway" "internet-gateway" {
vpc_id = aws_vpc.vpc.id
tags = {
Name = "igw-${var.contour_environment["region"]}-${lower(var.contour_environment["company"])}"
}
}
# Routing tables public
resource "aws_route_table" "public" {
vpc_id = aws_vpc.vpc.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.internet-gateway.id
}
tags = {
Name = "rt-${var.contour_environment["region"]}-${lower(var.contour_environment["company"])}-public"
}
}
3. Добавим в файл outputs.tf вывод ID таблицы маршрутизации
output "rt-public_id" {
value = aws_route_table.public.id
description = "The ID of public route table"
}
4. Добавим в файл variables.tf описание переменных для создания подсетей
variable "subnets" {
description = "subnets"
type = map(object({
cidr = string
availability_zone = string
publicipv4 = bool
tags = map(string)
}))
}
5. Добавим в файл terraform.tfvars собственно значения для самих переменных
subnets = {
dmz-a = {
cidr = "10.1.1.0/24"
availability_zone = "a"
publicipv4 = true
tags = {
Name = "dmz-subnet-1"
}
}
}
6. Применение конфигурации
terraform plan
terraform apply
Путь к IaC. Создадим VPC в AWS с помощью Terraform....
ПодробнееВ этом руководстве мы рассмотрим процесс экспорта образа AMI виртуальной машины EC2 из облака AWS в хранилище...
ПодробнееВкратце рассмотрим процесс миграции локальной виртуальной машины с операционной системой GNU/Linux из...
ПодробнееМониторинг изменений диапазонов сетей облака Cloudflare в Zabbix....
ПодробнееСоздание выделенной сети контейнерам Docker....
ПодробнееРезервное копирование в ClickHouse с помощью утилиты clickhouse-backup....
ПодробнееНовые комментарии
Цитата: FidoNet Цитата: sobir Цитата: FidoNet Спасибо за статью. Остальные

Цитата: sobir Цитата: FidoNet Спасибо за статью. Остальные статьи что находил

Цитата: FidoNet Цитата: sobir Цитата: FidoNet Можт быть дело в

Цитата: sobir Цитата: FidoNet Можт быть дело в dnsmasq.service? Ошибка Failed

Цитата: FidoNet Цитата: sobir Цитата: FidoNet Спасибо за статью. Остальные

Можт быть дело в dnsmasq.service? Ошибка Failed to set DNS configuration: Unit

Какой дистрибутив Linux вы часто используете?
Календарь
« Октябрь 2025 » | ||||||
---|---|---|---|---|---|---|
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |