Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
    • Настройка сетевого взаимодействия ресурсов из разных каталогов
    • Создание бастионного хоста
    • Создание туннеля между двумя подсетями при помощи OpenVPN Access Server
    • Защищенный доступ пользователей к облачным ресурсам на основе WireGuard VPN
    • Создание и настройка шлюза UserGate в режиме межсетевого экрана
    • Реализация отказоустойчивых сценариев для сетевых ВМ
    • Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе Check Point NGFW
    • Сегментация облачной инфраструктуры с помощью решения Check Point Next-Generation Firewall
    • Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе UserGate NGFW
    • Организация доступа через Cloud Interconnect к облачным сетям, размещенным за NGFW
    • Настройка защищенного туннеля GRE поверх IPsec
    • Настройка сети для Yandex Data Processing
    • Переключение сетевого соединения при пересоздании кластера Yandex Data Processing
    • Подключение к Object Storage из VPC
    • Подключение к Container Registry из VPC
    • Создание прямого транкового подключения и приватного соединения в нем
    • Создание прямого транкового подключения и публичного соединения в нем
    • Создание нового партнерского транкового подключения и приватного соединения в нем
    • Создание нового партнерского транкового подключения и публичного соединения в нем
    • Добавление приватного соединения в прямое или партнерское транковое подключение
    • Добавление публичного соединения в прямое или партнерское транковое подключение
    • Изменить емкость транкового подключения
    • Изменить набор IP-префиксов в приватном соединении
    • Удалить приватное соединение
    • Удалить публичное соединение
    • Удалить транковое подключение
    • Настройка VRRP для кластера серверов BareMetal
    • Настройка сетевой связности в подсети BareMetal
    • Настройка сетевой связности между подсетями BareMetal и Virtual Private Cloud
    • Доставка USB-устройств на сервер BareMetal или виртуальную машину

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

  • Порядок действий
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Настройте права доступа
  • Создайте каталоги без сети 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.

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

Предыдущая
Все руководства
Следующая
Создание бастионного хоста
Проект Яндекса
© 2025 ООО «Яндекс.Облако»