0Pricing
Terraform Infrastructure as Code · Урок

Настройка VPC и сети

Создайте с помощью Terraform AWS Virtual Private Cloud, подсети и группы безопасности, чтобы обеспечить инфраструктуре безопасную изолированную сетевую основу.

«Настройка VPC и сети» — бесплатный урок Terraform Infrastructure as Code на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Terraform Infrastructure as Code, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Terraform Infrastructure as Code содержит 4 уроков всего.

Зачем нужна пользовательская VPC

Каждый аккаунт AWS поставляется с VPC по умолчанию, но для рабочей инфраструктуры лучше использовать сеть, спроектированную самостоятельно. VPC (Virtual Private Cloud, виртуальное частное облако) — это изолированный раздел облака AWS, в котором Вы управляете диапазонами IP, подсетями, маршрутизацией и межсетевыми экранами.

С помощью Terraform Вы описываете всю сеть как код, поэтому её можно воспроизводимо создавать в разных регионах и аккаунтах.

Объявление ресурса VPC

Ресурс aws_vpc является корнем Вашей сети. Блок CIDR определяет диапазон частных IP-адресов. Блок /16 предоставляет примерно 65 000 адресов, которые можно разделить на подсети.

resource "aws_vpc" "main" {
  cidr_block           = "10.0.0.0/16"
  enable_dns_support   = true
  enable_dns_hostnames = true

  tags = {
    Name = "main-vpc"
  }
}

Общедоступные и частные подсети

Подсети разделяют диапазон VPC на меньшие блоки, связанные с зоной доступности.

  • Общедоступная подсеть — имеет маршрут к интернет-шлюзу и используется для балансировщиков нагрузки и узлов-бастионов.
  • Частная подсеть — не имеет прямого маршрута в интернет и подходит для баз данных и серверов приложений.

Создание общедоступной подсети

Каждой подсети нужны собственные CIDR (часть диапазона VPC) и зона доступности. Если установить map_public_ip_on_launch в значение true, экземплярам, запускаемым здесь, автоматически назначаются общедоступные IP-адреса.

resource "aws_subnet" "public" {
  vpc_id                  = aws_vpc.main.id
  cidr_block              = "10.0.1.0/24"
  availability_zone       = "us-east-1a"
  map_public_ip_on_launch = true

  tags = {
    Name = "public-subnet"
  }
}

Интернет-шлюз

Интернет-шлюз (IGW) позволяет ресурсам в общедоступной подсети выходить в интернет. Вы подключаете его непосредственно к VPC.

resource "aws_internet_gateway" "gw" {
  vpc_id = aws_vpc.main.id

  tags = {
    Name = "main-igw"
  }
}

Таблицы маршрутов

Подсеть становится действительно общедоступной только после того, как таблица маршрутов направит трафик 0.0.0.0/0 к интернет-шлюзу. Таблицы маршрутов сопоставляют целевые CIDR с целями.

resource "aws_route_table" "public" {
  vpc_id = aws_vpc.main.id

  route {
    cidr_block = "0.0.0.0/0"
    gateway_id = aws_internet_gateway.gw.id
  }
}

Связывание маршрутов с подсетями

Таблицы маршрутов ничего не делают, пока не связаны с подсетью. Ресурс aws_route_table_association связывает их.

resource "aws_route_table_association" "public" {
  subnet_id      = aws_subnet.public.id
  route_table_id = aws_route_table.public.id
}

Группы безопасности как межсетевые экраны

Группа безопасности — это межсетевой экран с отслеживанием состояния вокруг экземпляра. Это означает, что ответный трафик на разрешённый входящий запрос разрешается автоматически, поэтому обычно достаточно указать только нужные входящие правила.

Определение группы безопасности веб-сервера

Ниже мы разрешаем входящий HTTP-трафик откуда угодно и весь исходящий трафик. В реальных развёртываниях максимально сужайте исходный CIDR.

resource "aws_security_group" "web" {
  name   = "web-sg"
  vpc_id = aws_vpc.main.id

  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

Подключение экземпляра к сети

Подключите подсеть и группу безопасности к экземпляру EC2 с помощью subnet_id и vpc_security_group_ids. Это поместит сервер в Вашу пользовательскую сеть.

resource "aws_instance" "app" {
  ami                    = "ami-0abcd1234"
  instance_type          = "t3.micro"
  subnet_id              = aws_subnet.public.id
  vpc_security_group_ids = [aws_security_group.web.id]
}

Вывод идентификаторов сети

Предоставьте ключевые идентификаторы в виде выходных значений, чтобы после применения другие модули или ваша команда могли на них ссылаться.

output "vpc_id" {
  value = aws_vpc.main.id
}

output "public_subnet_id" {
  value = aws_subnet.public.id
}

Быстрая проверка

Проверьте, насколько хорошо Вы понимаете маршрутизацию VPC.

Итоги: основа Вашей сети

Вы создали полноценную сеть в Terraform:

  • aws_vpc с диапазоном CIDR.
  • Подсети в разных зонах доступности — публичные или приватные.
  • Шлюз Интернета и таблицы маршрутов для публичного доступа.
  • Группы безопасности как брандмауэры с отслеживанием состояния.

Эта сеть — основа, к которой подключается любой другой ресурс AWS.

Часто задаваемые вопросы

Урок «Настройка VPC и сети» бесплатный?

Да — полный текст урока «Настройка VPC и сети» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Terraform Infrastructure as Code, подпишись на CoddyKit PRO. Курс Terraform Infrastructure as Code содержит 4 уроков всего.

Чему я научусь в уроке «Настройка VPC и сети»?

Создайте с помощью Terraform AWS Virtual Private Cloud, подсети и группы безопасности, чтобы обеспечить инфраструктуре безопасную изолированную сетевую основу. Ты практикуешь Terraform Infrastructure as Code с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Terraform Infrastructure as Code?

Предыдущий опыт не требуется. Terraform Infrastructure as Code на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Настройка VPC и сети»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Terraform Infrastructure as Code?

Да. Каждый урок Terraform Infrastructure as Code включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Настройка поставщика AWS
  2. Подготовка экземпляров EC2
  3. Управление корзинами S3 и IAM
  4. Настройка VPC и сети
← Назад к Terraform Infrastructure as Code