7.6 KiB
Минимальная цепочка для одной ВМ (PROD)
Пример создаёт одну ВМ и только необходимые для неё услуги:
организация (создана вручную в ЛК)
-> vDC
-> Edge с routed-сетью
-> выделение IP организации (минимум 3)
-> SNAT
-> vApp
-> одна ВМ
Штурвал, базы данных и приложения в примере отсутствуют. Он основан на успешно
запущенной в PROD конфигурации VM_TF_Docs, а не на fullpipe_chain.
Провайдер зафиксирован на PROD-версии 1.5.0.
Важное условие: организация создаётся вручную
До запуска создайте организацию «Организация в Cloud Director» через ЛК. Terraform
не создаёт и не удаляет организацию: nubes_vc_vdc получает её имя или UUID через
organization.
В ЛК проверьте, что организации доступны выбранные resource pool, Provider VDC,
storage policy и IP space. Значения из примера (msk1, Intel Cascade Lake 3.1,
SSD SDS) подтверждены для использованного PROD-пула; для другого пула их нужно
заменить на значения из ЛК.
Почему выделяется 3 IP
Для проверенной цепочки с одной ВМ минимальное значение org_vip_count — 3.
При значении 2 API сообщил, что свободных IP — 0, а для операции требуется ещё 1;
при значении 3 развёртывание ВМ запустилось. Поэтому в этом примере не уменьшайте
квоту до 2, даже если из дополнительных потребителей IP оставлена только одна ВМ.
org_vip_count задаёт количество IP в выбранном ip_space_name на организации —
это не количество адресов, которое сама ВМ получит. Точное внутреннее распределение
резервов платформой эта конфигурация не показывает. Если другие услуги используют
адреса из того же IP space или там уже есть занятые адреса, квоту нужно увеличить.
Список услуг со статусами running/suspended сам по себе не показывает, какие IP
заняты.
В конфигурации VM установлен same_snat = true: согласно PROD-схеме при этом для ВМ
создаётся собственный внешний IP. SNAT на Edge также задаётся отдельным ресурсом,
как в проверенной цепочке.
Подготовка параметров
-
Скопируйте шаблоны:
cp terraform.tfvars.example terraform.tfvars cp secrets.auto.tfvars.example secrets.auto.tfvars -
В
secrets.auto.tfvarsзамените заглушку на PROD API token из ЛК → Профиль → Токены → «Технический». Не присылайте и не коммитьте этот файл. -
В
terraform.tfvarsзамените:organizationна имя или UUID вручную созданной организации;ip_space_nameна точное имя IP space из ЛК;vm_user_public_keyна содержимое вашего~/.ssh/id_ed25519.pub;vm_access_ip_listна доверенный публичный IP/CIDR для входящего доступа.
-
Убедитесь, что имена vDC, Edge, vApp и ВМ уникальны в организации. Не оставляйте значения-заглушки
REPLACE_WITH_.... -
Если выбранный resource pool отличается от проверенного PROD-пула, замените
vdc_network_provider,vdc_provider_vdc,vdc_storage_config, DNS и routed subnet на значения, допустимые в ЛК. Routed subnet/24не должен пересекаться с другой сетью.
Все переменные и значения по умолчанию прокомментированы в variables.tf и
terraform.tfvars.example. Параметры ресурсов сверены с PROD YAML-схемами.
Запуск
Команды выполняет владелец инфраструктуры; apply в этом примере не запускался:
terraform init
terraform validate
terraform plan
Проверьте план: ожидаются шесть услуг — vDC, Edge, выделение IP на организации, SNAT, vApp и ВМ. Убедитесь, что в плане нет неожиданных изменений уже существующих услуг. Только после проверки владелец запускает:
terraform apply
После завершения:
terraform output vm_state_flat
externalConnect — внешний адрес ВМ, internalConnect — адрес в routed-сети,
fqdn — DNS-имя, если платформа его вернула.
Параметры ВМ и операции
- Образ
Ubuntu_22-20Gвключает базовый диск 20 GB;vm_disk = 128задаёт дополнительный диск. vm_access_port_listразрешает только заданные порты.vm_access_ip_listограничивает адреса-источники; не оставляйте доступ SSH открытым для0.0.0.0/0, если это не требуется.git_revisionоставленnullпри создании. Новое значение этого маркера запускает redeploy при последующем Update.reconcile_triggerтакже оставленnullпри создании. Новое значение запускает reconcile при Update; при Create reconcile не выполняется.- В проверке PROD от 17.10.2026 файл-маркер в
/home/ubuntuотсутствовал после redeploy. Считайте локальные данные ВМ потенциально теряемыми при redeploy и храните важные данные вне системного диска.
Состав файлов
| Файл | Назначение |
|---|---|
versions.tf |
Версия Terraform и PROD-провайдера |
provider.tf |
Подключение к PROD API |
variables.tf |
Типы, значения по умолчанию и пояснения к входным переменным |
vdc.tf |
Виртуальный датацентр |
edge.tf |
Edge и routed-сеть |
network.tf |
Квота IP организации и SNAT |
vm.tf |
vApp и одна ВМ |
outputs.tf |
Идентификаторы услуг и состояние ВМ |
terraform.tfvars.example |
Несекретные значения и параметры примера |
secrets.auto.tfvars.example |
Шаблон локального файла для API token |