Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Compute Cloud
  • Yandex Container Solution
    • Все руководства
    • Настройка синхронизации часов с помощью NTP
    • Автомасштабирование группы ВМ для обработки сообщений из очереди
    • Обновление группы ВМ под нагрузкой
    • Развертывание Remote Desktop Gateway
    • Начало работы с Packer
    • Передача логов с ВМ в Yandex Cloud Logging
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Миграция в Yandex Cloud с помощью Хайстекс Акура
    • Защита от сбоев с помощью Хайстекс Акура
    • Резервное копирование ВМ с помощью Хайстекс Акура
    • Развертывание отказоустойчивой архитектуры с прерываемыми ВМ
      • Обзор
      • Консоль управления, CLI и API
      • Terraform
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
    • Создание триггеров, которые вызывают функции для остановки ВМ и отправки уведомлений в Telegram
    • Создание веб-приложения на Python с использованием фреймворка Flask
    • Создание SAP-программы в Yandex Cloud
    • Развертывание сервера Minecraft в Yandex Cloud
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Создание тестовых виртуальных машин через GitLab CI
    • Высокопроизводительные вычисления (HPC) на прерываемых ВМ
    • Настройка SFTP-сервера на Centos 7
    • Развертывание параллельной файловой системы GlusterFS в высокодоступном режиме
    • Развертывание параллельной файловой системы GlusterFS в высокопроизводительном режиме
    • Резервное копирование в Object Storage с помощью Bacula
    • Построение пайплайна CI/CD в GitLab с использованием serverless-продуктов
    • Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе Check Point NGFW
    • Сегментация облачной инфраструктуры с помощью решения Check Point Next-Generation Firewall
    • Настройка защищенного туннеля GRE поверх IPsec
    • Создание бастионного хоста
    • Реализация отказоустойчивых сценариев для сетевых виртуальных машин
    • Создание туннеля между двумя подсетями при помощи OpenVPN Access Server
    • Создание внешней таблицы на базе таблицы из бакета Object Storage с помощью конфигурационного файла
    • Настройка сетевой связности между подсетями BareMetal и Virtual Private Cloud
    • Работа со снапшотами в Managed Service for Kubernetes
    • Запуск языковой модели DeepSeek-R1 в кластере GPU
    • Запуск библиотеки vLLM с языковой моделью Gemma 3 на ВМ с GPU
    • Доставка USB-устройств на виртуальную машину или сервер BareMetal
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

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

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Делегируйте домен сервису Cloud DNS
  • Создайте инфраструктуру
  • Проверьте работу сайта
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Привязка доменного имени к ВМ с веб-сервером
  3. Terraform

Привязка доменного имени к ВМ с веб-сервером с помощью Terraform

Статья создана
Yandex Cloud
Улучшена
kvendingoldo
Обновлена 4 декабря 2024 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Делегируйте домен сервису Cloud DNS
  • Создайте инфраструктуру
  • Проверьте работу сайта
  • Удалите созданные ресурсы

Чтобы создать инфраструктуру для привязки доменного имени к ВМ с веб-сервером с помощью Terraform:

  1. Подготовьте облако к работе.
  2. Делегируйте домен сервису Cloud DNS.
  3. Создайте инфраструктуру.
  4. Проверьте работу сайта.

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

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

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

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

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

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

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

В стоимость поддержки создаваемого решения входят:

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

Делегируйте домен сервису Cloud DNSДелегируйте домен сервису Cloud DNS

Чтобы делегировать домен сервису Cloud DNS, в личном кабинете вашего регистратора домена укажите в настройках домена адреса DNS-серверов:

  • ns1.yandexcloud.net
  • ns2.yandexcloud.net

Делегирование происходит не сразу. Серверы интернет-провайдеров обычно обновляют записи до 24 часов (86400 секунд). Это обусловлено значением TTL, в течение которого кэшируются записи для доменов.

Проверить делегирование домена можно с помощью сервиса Whois или утилиты dig:

dig +short NS example.com

Результат:

ns2.yandexcloud.net.
ns1.yandexcloud.net.

Создайте инфраструктуруСоздайте инфраструктуру

Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

Terraform распространяется под лицензией Business Source License, а провайдер Yandex Cloud для Terraform — под лицензией MPL-2.0.

Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform или в зеркале.

Для создания инфраструктуры c помощью Terraform:

  1. Установите Terraform, получите данные для аутентификации и укажите источник для установки провайдера Yandex Cloud (раздел Настройте провайдер, шаг 1).

  2. Подготовьте файл с описанием инфраструктуры:

    Готовая конфигурация
    Вручную
    1. Клонируйте репозиторий с конфигурационными файлами.

      git clone https://github.com/yandex-cloud-examples/yc-compute-dns-binding
      
    2. Перейдите в директорию с репозиторием. В ней должны появиться файлы:

      • bind-domain-to-vm.tf — конфигурация создаваемой инфраструктуры.
      • bind-domain-to-vm.auto.tfvars — файл с пользовательскими данными.
    1. Создайте папку для файла с описанием инфраструктуры.
    2. Создайте в папке:
      1. Конфигурационный файл bind-domain-to-vm.tf:

        bind-domain-to-vm.tf
        # Объявление переменных для пользовательских параметров
        
        variable "folder_id" {
          type = string
        }
        
        variable "domain_name" {
          type = string
        }
        
        variable "ssh_key_path" {
          type = string
        }
        
        # Добавление прочих переменных
        
        locals {
          zone             = "ru-central1-a"
          network_name     = "webserver-network"
          subnet_name      = "webserver-subnet-ru-central1-a"
          sg_name          = "webserver-sg"
          vm_name          = "mywebserver"
          domain_zone_name = "my-domain-zone"
        }
        
        # Настройка провайдера
        
        terraform {
          required_providers {
            yandex = {
              source  = "yandex-cloud/yandex"
              version = ">= 0.47.0"
            }
          }
        }
        
        provider "yandex" {
          zone      = local.zone
          folder_id = var.folder_id
        }
        
        # Создание облачной сети
        
        resource "yandex_vpc_network" "webserver-network" {
          name = local.network_name
        }
        
        # Создание подсети
        
        resource "yandex_vpc_subnet" "webserver-subnet-b" {
          name           = local.subnet_name
          zone           = local.zone
          network_id     = "${yandex_vpc_network.webserver-network.id}"
          v4_cidr_blocks = ["192.168.1.0/24"]
        }
        
        # Создание группы безопасности
        
        resource "yandex_vpc_security_group" "webserver-sg" {
          name        = local.sg_name
          network_id  = "${yandex_vpc_network.webserver-network.id}"
          ingress {
            protocol       = "TCP"
            description    = "http"
            v4_cidr_blocks = ["0.0.0.0/0"]
            port           = 80
          }
        
          ingress {
            protocol       = "TCP"
            description    = "https"
            v4_cidr_blocks = ["0.0.0.0/0"]
            port           = 443
          }
        
          ingress {
            protocol       = "TCP"
            description    = "ssh"
            v4_cidr_blocks = ["0.0.0.0/0"]
            port           = 22
          }
        
          egress {
            protocol       = "ANY"
            description    = "any"
            v4_cidr_blocks = ["0.0.0.0/0"]
            from_port      = 0
            to_port        = 65535
          }
        }
        
        # Создание образа
        
        resource "yandex_compute_image" "osimage" {
          source_family = "lamp"
        }
        
        # Создание диска
        
        resource "yandex_compute_disk" "boot-disk" {
          name     = "web-server-boot"
          type     = "network-hdd"
          image_id = yandex_compute_image.osimage.id
        }
        
        # Создание ВМ
        
        resource "yandex_compute_instance" "mywebserver" {
          name        = local.vm_name
          platform_id = "standard-v2"
          zone        = local.zone
        
          resources {
            cores  = "2"
            memory = "2"
          }
        
          boot_disk {
            disk_id = yandex_compute_disk.boot-disk.id
          }
        
          network_interface {
            subnet_id          = "${yandex_vpc_subnet.webserver-subnet-b.id}"
            nat                = true
            security_group_ids = ["${yandex_vpc_security_group.webserver-sg.id}"]
          }
        
          metadata = {
            user-data = "#cloud-config\nusers:\n  - name: yc-user\n    groups: sudo\n    shell: /bin/bash\n    sudo: 'ALL=(ALL) NOPASSWD:ALL'\n    ssh_authorized_keys:\n      - ${file("${var.ssh_key_path}")}"
          }
        }
        
        # Создание зоны DNS
        
        resource "yandex_dns_zone" "my-domain-zone" {
          name    = local.domain_zone_name
          zone    = "${var.domain_name}."
          public  = true
        }
        
        # Создание ресурсной записи типа А
        
        resource "yandex_dns_recordset" "rsА1" {
          zone_id = yandex_dns_zone.my-domain-zone.id
          name    = "${yandex_dns_zone.my-domain-zone.zone}"
          type    = "A"
          ttl     = 600
          data    = ["${yandex_compute_instance.mywebserver.network_interface.0.nat_ip_address}"]
        }
        
      2. Файл с пользовательскими данными bind-domain-to-vm.auto.tfvars:

        bind-domain-to-vm.auto.tfvars
        folder_id    = "<идентификатор_каталога>"
        ssh_key_path = "<путь_к_SSH-ключу>"
        domain_name  = "<имя_домена>"
        

    Более подробную информацию о параметрах используемых ресурсов в Terraform см. в документации провайдера:

    • Сеть — yandex_vpc_network
    • Подсети — yandex_vpc_subnet
    • Группы безопасности — yandex_vpc_security_group
    • Образ — yandex_compute_image
    • Диск — yandex_compute_disk
    • ВМ — yandex_compute_instance
    • DNS-зона — yandex_dns_zone
    • Ресурсная запись DNS — yandex_dns_recordset
  3. В файле bind-domain-to-vm.auto.tfvars задайте пользовательские параметры:

    • folder_id — идентификатор каталога.
    • ssh_key_path — путь к файлу с открытым SSH-ключом для аутентификации пользователя на ВМ, например ~/.ssh/id_ed25519.pub. Подробнее см. Создание пары ключей SSH.
    • domain_name — имя вашего домена, например example.com.
  4. Создайте ресурсы:

    1. В терминале перейдите в папку, где вы отредактировали конфигурационный файл.

    2. Проверьте корректность конфигурационного файла с помощью команды:

      terraform validate
      

      Если конфигурация является корректной, появится сообщение:

      Success! The configuration is valid.
      
    3. Выполните команду:

      terraform plan
      

      В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.

    4. Примените изменения конфигурации:

      terraform apply
      
    5. Подтвердите изменения: введите в терминале слово yes и нажмите Enter.

  5. Получите публичный IP-адрес ВМ — он потребуется далее, чтобы проверить работу хостинга.

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

Проверьте работу сайтаПроверьте работу сайта

Теперь сайт на вашем веб-сервере доступен по доменному имени. Чтобы проверить работу сайта, введите в браузере его IP-адрес или доменное имя:

  • http://<публичный_IP-адрес_ВМ>
  • http://example.com

Удалите созданные ресурсыУдалите созданные ресурсы

Чтобы остановить работу хостинга и перестать платить за созданные ресурсы:

  1. Откройте конфигурационный файл bind-domain-to-vm.tf и удалите описание создаваемой инфраструктуры из файла.

  2. Примените изменения:

    1. В терминале перейдите в папку, где вы отредактировали конфигурационный файл.

    2. Проверьте корректность конфигурационного файла с помощью команды:

      terraform validate
      

      Если конфигурация является корректной, появится сообщение:

      Success! The configuration is valid.
      
    3. Выполните команду:

      terraform plan
      

      В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.

    4. Примените изменения конфигурации:

      terraform apply
      
    5. Подтвердите изменения: введите в терминале слово yes и нажмите Enter.

См. такжеСм. также

  • Привязка доменного имени к ВМ с веб-сервером с помощью консоли управления, CLI или API.

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

Предыдущая
Консоль управления, CLI и API
Следующая
Настройка отказоустойчивой архитектуры в Yandex Cloud
Проект Яндекса
© 2025 ООО «Яндекс.Облако»