Создание подсетей в 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
Похожие новости
Экспорт образа AMI виртуальной машины из AWS в хранилище S3

В этом руководстве мы рассмотрим процесс экспорта образа AMI виртуальной машины EC2 из облака AWS в хранилище...

Подробнее
Мигрируем виртуальную машину из VirtualBox в облако AWS

Вкратце рассмотрим процесс миграции локальной виртуальной машины с операционной системой GNU/Linux из...

Подробнее
Мониторинг актуальных IP-адресов облака Cloudflare в Zabbix

Мониторинг изменений диапазонов сетей облака Cloudflare в Zabbix....

Подробнее
Как назначить конкретную подсеть контейнерам Docker

Создание выделенной сети контейнерам Docker....

Подробнее
Резервное копирование БД ClickHouse в Ubuntu

Резервное копирование в ClickHouse с помощью утилиты clickhouse-backup....

Подробнее
Комментарии (0)
Новые комментарии
sobir8 ноября 2024 12:42

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

img
К комментарию
FidoNet7 ноября 2024 03:26

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

img
К комментарию
sobir27 октября 2024 19:02

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

img
К комментарию
FidoNet25 октября 2024 22:04

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

img
К комментарию
sobir25 октября 2024 16:48

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

img
К комментарию
FidoNet20 октября 2024 12:12

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

img
К комментарию
Все комментарии
Какой дистрибутив Linux вы часто используете?
Календарь
«    Октябрь 2025    »
ПнВтСрЧтПтСбВс
 12345
6789101112
13141516171819
20212223242526
2728293031 
Подпишись на канал