Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • AI Studio
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Virtual Private Cloud
  • Начало работы
    • Все руководства
    • Архитектура и защита базового интернет-сервиса
    • Настройки DHCP для работы с корпоративным DNS-сервером
    • Установка виртуального роутера Cisco CSR 1000v
    • Установка виртуального роутера Mikrotik CHR
    • Соединение с облачной сетью при помощи OpenVPN
    • Настройка Cloud DNS для доступа к кластеру Managed Service for ClickHouse® из других облачных сетей
    • Защищенный доступ пользователей к облачным ресурсам на основе WireGuard VPN
    • Создание и настройка шлюза UserGate в режиме прокси-сервера
    • Создание и настройка шлюза UserGate в режиме межсетевого экрана
    • Реализация отказоустойчивых сценариев для сетевых виртуальных машин
    • Создание туннеля между двумя подсетями при помощи OpenVPN Access Server
    • Создание бастионного хоста
    • Миграция кластера Yandex Data Processing с файловой системой HDFS в другую зону доступности
    • Настройка сети для Yandex Data Processing
    • Сеть между каталогами
    • Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе Check Point NGFW
    • Сегментация облачной инфраструктуры с помощью решения Check Point Next-Generation Firewall
    • Подключение к Object Storage из Virtual Private Cloud
    • Подключение к Container Registry из Virtual Private Cloud
    • Использование модулей Yandex Cloud в Terraform
    • Развертывание группы доступности Always On с внутренним сетевым балансировщиком
    • Организация доступа через Cloud Interconnect к облачным сетям, размещенным за NGFW
    • Автоматизация задач с помощью Managed Service for Apache Airflow™
    • Настройка сетевой связности между подсетями BareMetal и Virtual Private Cloud
  • DDoS Protection
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Аудитные логи Audit Trails
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Порядок действий
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Настройте права доступа
  • Создайте каталоги без сети VPC
  • Создайте облачную сеть VPC с подсетями
  • Переместите подсети
  • Создайте виртуальные машины
  • Проверьте сетевую связность ресурсов
  • Как удалить созданные ресурсы
  1. Практические руководства
  2. Сеть между каталогами

Настройка сетевого взаимодействия ресурсов из разных каталогов

Статья создана
Yandex Cloud
Обновлена 21 апреля 2025 г.
  • Порядок действий
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
    • Настройте права доступа
  • Создайте каталоги без сети VPC
  • Создайте облачную сеть VPC с подсетями
  • Переместите подсети
  • Создайте виртуальные машины
  • Проверьте сетевую связность ресурсов
  • Как удалить созданные ресурсы

В Yandex Cloud сетевые ресурсы, например, облачные сети и подсети, обычно создаются в одном облачном каталоге ресурсов, а связь с ресурсами в других каталогах облака отсутствует. При развертывании ресурсов в Yandex Cloud часто возникает необходимость обеспечить сетевое взаимодействие между ресурсами из разных каталогов. Один из способов решения этой задачи – метод Multi-folder VPC, расширяющий область действия отдельно взятой сети VPC с одного каталога на несколько.

В зависимости от выбранного интерфейса управления Yandex Cloud расширение области действия сети в другие каталоги достигается за счет:

  • перемещения подсетей в другие каталоги облака — консоль управления (UI), CLI;
  • создания подсетей в целевых каталогах — CLI;
  • создания подсетей в целевых каталогах — Terraform.

После этого к подсетям в целевых каталогах можно подключать виртуальные машины, кластеры Managed Service for Kubernetes, хосты БД, балансировщики нагрузки, агенты нагрузочного тестирования или другие ресурсы, находящиеся в этих каталогах. Таким образом можно получить сеть, которая обеспечит связность между ресурсами из разных каталогов.

В данном руководстве описан пример создания инфраструктуры, состоящей из трех виртуальных машин, расположенных в трех разных каталогах и объединенных в одну общую внутреннюю сеть. Сетевое объединение облачных ресурсов в разных каталогах заключается в создании в одном из этих каталогов облачной сети с последующим расширением области ее действия в другие каталоги. Таким образом, сеть из одного каталога, как бы растягивается на несколько каталогов, давая возможность подключать к «растянутым подсетям» в этих каталогах нужные ресурсы.

Важно

Перемещение подсетей возможно только между каталогами одного облака.

Например, в составе среды разработки есть модуль CI/CD, компоненты которого размещаются в каталоге net-folder. Им необходимо обеспечить сетевое взаимодействие с компонентами dev-, stage- и prod-окружений, которые находятся в соответствующих каталогах.

Схема такого решения показана на рисунке ниже.

В результате будет настроена сетевая связность между виртуальными машинами в разных окружениях (каталогах), которые подключены к разным подсетям одной сети. Кроме того, все ВМ смогут общаться друг с другом не только по IP-адресам, но и через доменные имена FQDN службы DNS.

Порядок действийПорядок действий

В зависимости от выбранного интерфейса управления порядок действий для создания Multi-folder VPC может отличаться.

Чтобы создать тестовую инфраструктуру и организовать связь ресурсов:

  1. Подготовьте облако к работе.
  2. Создайте каталоги без сети VPC.
  3. Создайте облачную сеть VPC с подсетями.
  4. Переместите подсети.
  5. Создайте виртуальные машины.
  6. Проверьте сетевую связность ресурсов.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки инфраструктуры входят:

  • плата за постоянно работающие ВМ (см. тарифы Yandex Compute Cloud);
  • плата за использование публичных IP-адресов и исходящий трафик (см. тарифы Yandex Virtual Private Cloud).

Настройте права доступаНастройте права доступа

Настройте права доступа к каталогу:

  • Чтобы создавать сети и управлять подсетями, назначьте сервисному аккаунту или пользователю сервисную роль vpc.admin либо сервисные роли vpc.privateAdmin, vpc.publicAdmin, vpc.securityGroups.admin.
  • Чтобы создавать и управлять ВМ в каталоге, назначьте сервисные роли vpc.user и compute.admin.

Разграничение сетевого доступа обеспечивается группами безопасности.

Создайте каталоги без сети VPCСоздайте каталоги без сети VPC

  1. Создайте каталоги net-folder, dev-folder и prod-folder:

    Консоль управления
    CLI
    Terraform
    API
    1. В консоли управления выберите облако и нажмите кнопку Создать каталог.
    2. Введите имя каталога net-folder.
    3. Отключите опцию Создать сеть по умолчанию, чтобы создать сеть и подсети вручную.
    4. Нажмите кнопку Создать.

    Аналогично создайте еще два каталога без сети VPC с именами dev-folder и prod-folder.

    Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

    Примечание

    Для создания ресурсов с помощью CLI необходимо аутентифицироваться от имени сервисного аккаунта с ролью admin на облако.

    1. Посмотрите описание команды создания каталога:

      yc resource-manager folder create --help
      
    2. Создайте облачные каталоги net-folder, dev-folder и prod-folder:

      yc resource-manager folder create --name net-folder
      yc resource-manager folder create --name dev-folder
      yc resource-manager folder create --name prod-folder
      
    1. Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

    2. Задайте параметры для Terraform-провайдера Yandex Cloud:

      # ==================================
      # Terraform & Provider Configuration
      # ==================================
      terraform {
       required_providers {
           yandex = {
             source  = "yandex-cloud/yandex"
             version = "~> 0.92.0"
           }
       }
      }
      
    3. Опишите входные переменные:

      variable "cloud_id" {
        description = "YC cloud-id. Taken from environment variable."
      }
      
    4. Опишите целевые ресурсы — облачные каталоги:

      # ========
      # Folders
      # ========
      resource "yandex_resourcemanager_folder" "net_folder" {
        cloud_id = var.cloud_id
        name     = "net-folder"
      }
      
      resource "yandex_resourcemanager_folder" "dev_folder" {
        cloud_id = var.cloud_id
        name     = "dev-folder"
      }
      
      resource "yandex_resourcemanager_folder" "prod_folder" {
        cloud_id = var.cloud_id
        name     = "prod-folder"
      }
      
    5. Создайте необходимую инфраструктуру:

      1. Выполните команды:

        export TF_VAR_cloud_id=$(yc config get cloud-id)
        export YC_TOKEN=$(yc iam create-token)
        terraform apply
        
      2. Подтвердите изменение ресурсов и дождитесь завершения операции.

    Воспользуйтесь методом REST API create для ресурса Folder или вызовом gRPC API FolderService/Create.

Создайте облачную сеть VPC с подсетямиСоздайте облачную сеть VPC с подсетями

В каталоге net-folder создайте сеть shared-net с тремя подсетями со следующими параметрами:

Имя подсети Префикс Зона доступности Целевой каталог
subnet-a 10.1.11.0/24 ru-central1-a net-folder
subnet-b 10.1.12.0/24 ru-central1-b dev-folder
subnet-d 10.1.13.0/24 ru-central1-d prod-folder
  1. Создайте облачную сеть:

    Консоль управления
    CLI
    Terraform
    API
    1. В консоли управления перейдите в каталог net-folder.
    2. В списке сервисов выберите Virtual Private Cloud.
    3. Нажмите кнопку Создать сеть.
    4. Задайте имя сети shared-net.
    5. Отключите опцию Создать подсети, чтобы создать подсети вручную.
    6. Нажмите кнопку Создать сеть.
    1. Посмотрите описание команды CLI для создания облачной сети:

      yc vpc network create --help
      
    2. Создайте облачную сеть shared-net в каталоге net-folder:

      yc vpc network create --folder-name net-folder --name shared-net
      
    1. Опишите целевой ресурс — облачную сеть:

      # =============
      # VPC Resources
      # =============
      resource "yandex_vpc_network" "shared_net" {
        folder_id = yandex_resourcemanager_folder.net_folder.id
        name      = "shared-net"
      }
      
    2. Выполните команды

      export TF_VAR_cloud_id=$(yc config get cloud-id)
      export YC_TOKEN=$(yc iam create-token)
      terraform apply
      
    3. Подтвердите изменение ресурсов.

    4. Дождитесь завершения операции.

    Воспользуйтесь методом REST API create для ресурса Network или вызовом gRPC API NetworkService/Create.

  2. Создайте подсети subnet-a, subnet-b и subnet-d в зонах доступности ru-central1-a, ru-central1-b и ru-central1-d соответственно:

    Консоль управления
    CLI
    Terraform
    API
    1. В консоли управления перейдите в каталог net-folder.
    2. В списке сервисов выберите Virtual Private Cloud.
    3. Нажмите на имя облачной сети shared-net.
    4. Нажмите кнопку Создать подсеть.
    5. Укажите название подсети subnet-a, subnet-b или subnet-d соответственно.
    6. Выберите зону доступности ru-central1-a, ru-central1-b или ru-central1-d соответственно из выпадающего списка.
    7. Введите CIDR подсети: IP-адрес 10.1.11.0 и маску подсети 24. Подробнее про диапазоны IP-адресов в подсетях читайте в разделе Облачные сети и подсети.
    8. Нажмите кнопку Создать подсеть.
    1. Посмотрите описание команды CLI для создания подсети:

      yc vpc subnet create --help
      
    2. Создайте подсети в целевых каталогах:

      yc vpc subnet create --folder-name net-folder --name subnet-a \
        --network-name shared-net --zone ru-central1-a --range 10.1.11.0/24
      
      yc vpc subnet create --folder-name dev-folder --name subnet-b \
        --network-name shared-net --zone ru-central1-b --range 10.1.12.0/24
      
      yc vpc subnet create --folder-name prod-folder --name subnet-d \
        --network-name shared-net --zone ru-central1-d --range 10.1.13.0/24
      
    3. Проверьте состояние созданных подсетей:

      yc vpc subnet list --folder-name net-folder
      yc vpc subnet list --folder-name dev-folder
      yc vpc subnet list --folder-name prod-folder
      
    1. Опишите целевые ресурсы — облачные подсети:

      resource "yandex_vpc_subnet" "subnet_a" {
        folder_id      = yandex_resourcemanager_folder.net_folder.id
        name           = "subnet-a"
        description    = "NET folder subnet"
        v4_cidr_blocks = ["10.1.11.0/24"]
        zone           = "ru-central1-a"
        network_id     = yandex_vpc_network.shared_net.id
      }
      
      resource "yandex_vpc_subnet" "subnet_b" {
        folder_id      = yandex_resourcemanager_folder.dev_folder.id
        name           = "subnet-b"
        description    = "DEV folder subnet"
        v4_cidr_blocks = ["10.1.12.0/24"]
        zone           = "ru-central1-b"
        network_id     = yandex_vpc_network.shared_net.id
      }
      
      resource "yandex_vpc_subnet" "subnet_d" {
        folder_id      = yandex_resourcemanager_folder.prod_folder.id
        name           = "subnet-d"
        description    = "PROD folder subnet"
        v4_cidr_blocks = ["10.1.13.0/24"]
        zone           = "ru-central1-d"
        network_id     = yandex_vpc_network.shared_net.id
      }
      
    2. Выполните команды:

      export TF_VAR_cloud_id=$(yc config get cloud-id)
      export YC_TOKEN=$(yc iam create-token)
      terraform apply
      
    3. Подтвердите изменение ресурсов и дождитесь завершения операции.

    Воспользуйтесь методом REST API create для ресурса Subnet или вызовом gRPC API SubnetService/Create.

Переместите подсетиПереместите подсети

Переместите подсеть subnet-b в каталог dev-folder:

Консоль управления
CLI
API
  1. В консоли управления перейдите в каталог net-folder.
  2. В списке сервисов выберите Virtual Private Cloud.
  3. Нажмите на имя облачной сети shared-net.
  4. Нажмите значок в строке подсети subnet-b, и выберите Переместить.
  5. В выпадающем списке выберите каталог dev-folder.
  6. Нажмите кнопку Переместить.
  1. Посмотрите описание команды CLI для перемещения подсети:

    yc vpc subnet move --help
    
  2. Переместите подсеть:

    yc vpc subnet move subnet-b \
      --destination-folder-name dev-folder
    

Воспользуйтесь методом REST API move для ресурса Subnet или вызовом gRPC API SubnetService/Move.

Аналогично переместите подсеть subnet-d в каталог prod-folder.

Создайте виртуальные машиныСоздайте виртуальные машины

Создайте виртуальные машины со следующими параметрами:

Имя ВМ Каталог Зона доступности Подсеть
net-vm net-folder ru-central1-a subnet-a
dev-vm dev-folder ru-central1-b subnet-b
prod-vm prod-folder ru-central1-d subnet-d
Консоль управления
CLI
Terraform
API

Создайте ВМ net-vm с ОС Linux в каталоге net-folder:

  1. В консоли управления выберите каталог net-folder.

  2. Нажмите кнопку Создать ресурс и выберите Виртуальная машина.

  3. В блоке Образ загрузочного диска в поле Поиск продукта введите Ubuntu 22.04 LTS и выберите публичный образ Ubuntu 22.04 LTS.

  4. В блоке Расположение выберите зону доступности ru-central1-a.

  5. В блоке Сетевые настройки:

    • В поле Подсеть выберите подсеть subnet-a.
    • В поле Публичный IP-адрес оставьте значение Автоматически, чтобы назначить ВМ случайный внешний IP-адрес из пула Yandex Cloud, или выберите статический адрес из списка, если вы зарезервировали его заранее.
  6. В блоке Доступ выберите вариант SSH-ключ и укажите данные для доступа на ВМ:

    • В поле Логин введите имя пользователя: ycuser.
    • В поле SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.

      Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:

      • Нажмите кнопку Добавить ключ.
      • Задайте имя SSH-ключа.
      • Загрузите или вставьте содержимое открытого SSH-ключа. Пару SSH-ключей для подключения к ВМ по SSH необходимо создать самостоятельно.
      • Нажмите кнопку Добавить.

      SSH-ключ будет добавлен в ваш профиль пользователя организации.

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

  7. В блоке Общая информация задайте имя ВМ: net-vm.

  8. Остальные настройки оставьте без изменения и нажмите кнопку Создать ВМ.

Аналогично создайте ВМ dev-vm и prod-vm в соответствующих каталогах.

Примечание

При создании ВМ назначаются публичный и внутренний IP-адреса. Запишите их — они понадобятся для доступа к ВМ и проверки сетевого взаимодействия с другими ВМ.

  1. Опишите шаблон для метаданных ВМ в отдельном файле vm-init.tpl:

    #cloud-config
    
    datasource:
      Ec2:
        strict_id: false
    ssh_pwauth: yes
    users:
      - name: "${USER_NAME}"
        sudo: ALL=(ALL) NOPASSWD:ALL
        shell: /bin/bash
        ssh_authorized_keys:
          - "${USER_SSH_KEY}"
    
  2. Сгенерируйте файл с метаданными для развертывания ВМ:

    export USER_NAME=ycuser
    export USER_SSH_KEY=$(cat ~/.ssh/id_rsa.pub)
    
    envsubst < vm-init.tpl > vm-config.txt
    
  3. Создайте виртуальные машины:

    yc compute instance create --name=net-vm --hostname=net-vm \
      --zone=ru-central1-a \
      --platform=standard-v3 \
      --cores=2 --memory=4G --core-fraction=100 \
      --create-boot-disk image-folder-id=standard-images,image-family=ubuntu-2204-lts \
      --network-interface subnet-name=subnet-a,ipv4-address=auto,nat-ip-version=ipv4 \
      --metadata-from-file user-data=vm-config.txt
    
    yc compute instance create --name=dev-vm --hostname=dev-vm \
      --zone=ru-central1-b \
      --platform=standard-v3 \
      --cores=2 --memory=4G --core-fraction=100 \
      --create-boot-disk image-folder-id=standard-images,image-family=ubuntu-2204-lts \
      --network-interface subnet-name=subnet-b,ipv4-address=auto,nat-ip-version=ipv4 \
      --metadata-from-file user-data=vm-config.txt
    
    yc compute instance create --name=prod-vm --hostname=prod-vm \
      --zone=ru-central1-d \
      --platform=standard-v3 \
      --cores=2 --memory=4G --core-fraction=100 \
      --create-boot-disk image-folder-id=standard-images,image-family=ubuntu-2204-lts \
      --network-interface subnet-name=subnet-d,ipv4-address=auto,nat-ip-version=ipv4 \
      --metadata-from-file user-data=vm-config.txt
    

    Примечание

    Команды yc compute instance create | create-with-container | update | add-metadata поддерживают подстановку в метаданные ВМ значений переменных окружения. Эти значения, заданные в ключе user-data в формате $<имя_переменной>, в момент выполнения команды Yandex Cloud CLI будут подставлены в метаданные ВМ из переменных окружения среды, в которой выполняется команда.

    Чтобы изменить такое поведение, не подставлять значение переменной из среды выполнения команды CLI и передать в метаданные ВМ имя переменной в формате $<имя_переменной>, используйте синтаксис с двумя символами доллара. Например: $$<имя_переменной>.

    Подробнее см. в разделе Особенности передачи переменных окружения в метаданных через CLI.

  4. Сохраните публичные IP-адреса ВМ для дальнейшего использования:

    NET_VM_IP=$(yc compute instance get net-vm --format=json | jq -r '.network_interfaces[0].primary_v4_address.one_to_one_nat.address')
    DEV_VM_IP=$(yc compute instance get dev-vm --format=json | jq -r '.network_interfaces[0].primary_v4_address.one_to_one_nat.address')
    PROD_VM_IP=$(yc compute instance get prod-vm --format=json | jq -r '.network_interfaces[0].primary_v4_address.one_to_one_nat.address')
    
  1. Опишите входные переменные:

    variable "user_name" {
      description = "VM User Name"
      default     = "ycuser"
    }
    
    variable "user_ssh_key_path" {
      description = "User's SSH public key file"
      default     = "~/.ssh/id_rsa.pub"
    }
    
  2. Опишите шаблон для метаданных ВМ в отдельном файле vm-init.tpl:

    #cloud-config
    
    datasource:
      Ec2:
        strict_id: false
    ssh_pwauth: yes
    users:
      - name: "${USER_NAME}"
        sudo: ALL=(ALL) NOPASSWD:ALL
        shell: /bin/bash
        ssh_authorized_keys:
          - "${USER_SSH_KEY}"
    
  3. Опишите целевые ресурсы — виртуальные машины:

    # =================
    # Compute Resources
    # =================
    data "yandex_compute_image" "vm_image" {
      family = "ubuntu-2204-lts"
    }
    
    resource "yandex_compute_disk" "boot-disk-1" {
      name     = "boot-disk-1"
      type     = "network-hdd"
      zone     = "ru-central1-a"
      size     = "20"
      image_id = yandex_compute_image.vm_image.id
    }
    
    resource "yandex_compute_disk" "boot-disk-2" {
      name     = "boot-disk-2"
      type     = "network-hdd"
      zone     = "ru-central1-b"
      size     = "20"
      image_id = yandex_compute_image.vm_image.id
    }
    
    resource "yandex_compute_disk" "boot-disk-3" {
      name     = "boot-disk-3"
      type     = "network-hdd"
      zone     = "ru-central1-d"
      size     = "20"
      image_id = yandex_compute_image.vm_image.id
    }
    
    resource "yandex_compute_instance" "net_vm" {
      folder_id   = yandex_resourcemanager_folder.net_folder.id
      name        = "net-vm"
      hostname    = "net-vm"
      platform_id = "standard-v3"
      zone        = "ru-central1-a"
      resources {
        cores  = 2
        memory = 4
      }
    
      boot_disk {
        disk_id = yandex_compute_disk.boot-disk-1.id
      }
    
      network_interface {
        subnet_id = yandex_vpc_subnet.subnet_a.id
        nat       = true
      }
    
      metadata = {
        user-data = templatefile("vm-init.tpl", {
          USER_NAME    = var.user_name
          USER_SSH_KEY = file(var.user_ssh_key_path)
        })
      }
    }
    
    resource "yandex_compute_instance" "dev_vm" {
      folder_id   = yandex_resourcemanager_folder.dev_folder.id
      name        = "dev-vm"
      hostname    = "dev-vm"
      platform_id = "standard-v3"
      zone        = "ru-central1-b"
      resources {
        cores  = 2
        memory = 4
      }
    
      boot_disk {
        disk_id = yandex_compute_disk.boot-disk-2.id
      }
    
      network_interface {
        subnet_id = yandex_vpc_subnet.subnet_b.id
        nat       = true
      }
    
      metadata = {
        user-data = templatefile("vm-init.tpl", {
          USER_NAME    = var.user_name
          USER_SSH_KEY = file(var.user_ssh_key_path)
        })
      }
    }
    
    resource "yandex_compute_instance" "prod_vm" {
      folder_id   = yandex_resourcemanager_folder.prod_folder.id
      name        = "prod-vm"
      hostname    = "prod-vm"
      platform_id = "standard-v3"
      zone        = "ru-central1-d"
      resources {
        cores  = 2
        memory = 4
      }
    
      boot_disk {
        disk_id = yandex_compute_disk.boot-disk-3.id
      }
    
      network_interface {
        subnet_id = yandex_vpc_subnet.subnet_d.id
        nat       = true
      }
    
      metadata = {
        user-data = templatefile("vm-init.tpl", {
          USER_NAME    = var.user_name
          USER_SSH_KEY = file(var.user_ssh_key_path)
        })
      }
    }
    
    # =======
    # Outputs
    # =======
    output "NET-vm" {
      value = yandex_compute_instance.network_vm.network_interface.0.nat_ip_address
    }
    
    output "DEV-vm" {
      value = yandex_compute_instance.dev_vm.network_interface.0.nat_ip_address
    }
    
    output "PROD-vm" {
      value = yandex_compute_instance.prod_vm.network_interface.0.nat_ip_address
    }
    
  4. Выполните команды

    export TF_VAR_cloud_id=$(yc config get cloud-id)
    export YC_TOKEN=$(yc iam create-token)
    terraform apply
    
  5. Подтвердите изменение ресурсов и дождитесь завершения операции.

Чтобы создать виртуальную машину, воспользуйтесь методом REST API create для ресурса Compute Instance или вызовом gRPC API InstanceService/Create.

Проверьте сетевую связность ресурсовПроверьте сетевую связность ресурсов

  1. Подключитесь к ВМ net-vm по SSH:

    ssh ycuser@<публичный_IP-адрес_ВМ_net-vm>
    
  2. Проверьте IP-связность с ВМ dev-vm внутри VPC:

    ping -c3 <внутренний_IP-адрес_ВМ_dev-vm>
    

    Результат:

    PING 10.127.20.4 (10.127.20.4) 56(84) bytes of data.
    64 bytes from 10.127.20.4: icmp_seq=1 ttl=61 time=7.45 ms
    64 bytes from 10.127.20.4: icmp_seq=2 ttl=61 time=5.61 ms
    64 bytes from 10.127.20.4: icmp_seq=3 ttl=61 time=5.65 ms
    --- 10.127.20.4 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2003ms
    rtt min/avg/max/mdev = 5.613/6.235/7.446/0.855 ms
    
  3. Аналогично проверьте IP-связность с ВМ prod-vm внутри VPC.

  4. Подключитесь к ВМ dev-vm по SSH и проверьте IP-связность с ВМ net-vm и ВМ prod-vm с помощью команды ping.

  5. Подключитесь к ВМ prod-vm по SSH и проверьте IP-связность с ВМ net-vm и ВМ dev-vm с помощью команды ping.

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы, удалите ВМ net-vm, dev-vm и prod-vm.

Была ли статья полезна?

Предыдущая
Настройка сети для Yandex Data Processing
Следующая
Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе Check Point NGFW
Проект Яндекса
© 2025 ООО «Яндекс.Облако»