Files
tf_examples/fullpipe_chain
..

vDC → Edge → внешние IP → SNAT → Штурвал

Пример поднимает всю цепочку в Nubes:

  • виртуальный датацентр (vDC);
  • сетевой шлюз периметра (Edge) с балансировщиком AVI;
  • внешние IP на организации;
  • SNAT на шлюзе;
  • Kubernetes-кластер Штурвал (сервис 150) на этой сети.

Организацию создайте заранее в ЛК: Terraform её не создаёт и не удаляет. Файлы примера повторяют рабочую конфигурацию стенда, включая флаги «заморозки» при удалении (см. шаг 6) и усыновление уже существующих услуг по имени.

Перед началом: нужен установленный Terraform 1.5 или новее. Провайдер скачается сам при terraform init — отдельно ставить ничего не нужно.

1. Скачайте пример

git clone https://gitea.services.ngcloud.ru/Nail/tf_examples.git
cd tf_examples/fullpipe_chain

2. Возьмите значения в ЛК

Значение Где взять Пример
api_token ЛК → Профиль → Токены → «Технический» eyJhbGciOi...
organization ЛК → услуга «Организация в Cloud Director» → название услуги organ
vdc_network_provider ЛК → создание vDC → «Сетевой провайдер» snb1
vdc_provider_vdc ЛК → создание vDC → «Provider VDC» Intel Broadwell 2.4
vdc_storage_config ЛК → создание vDC → доступные дисковые политики SATA
ip_space_name ЛК → карточка организации → внешние IP internet-ipv4-v1

Остальные значения уже подставлены в terraform.tfvars.example — меняйте, если нужно.

3. Заполните terraform.tfvars

cp terraform.tfvars.example terraform.tfvars
nano terraform.tfvars      # подставьте значения из шага 2

Полный список параметров — в variables.tf, у каждой переменной есть описание.

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

terraform init     # один раз — скачает провайдер
terraform plan     # покажет, что будет создано (5 ресурсов), ничего не меняет
terraform apply    # создаст (подтвердить: yes)

5. Проверьте результат

terraform output   # UUID и имена созданных услуг

И в ЛК: появились vDC, Edge и кластер Штурвал, на организации выделены внешние IP, на шлюзе включён SNAT. Повторный terraform plan должен показать No changes.

Кластер Штурвала создаётся десятки минут — провайдер ждёт его (operation_timeout = "60m"), а в ЛК он появится со статусом running. Адреса Kubernetes API и Ingress — в terraform output shturval_state_params (поля kubernetesApiAddress и ingressAddress).

6. Удаление

terraform destroy

По умолчанию пример настроен на «заморозку»: ничего не удаляется из облака.

Ресурс Что делает destroy Флаг
Кластер Штурвал suspend: кластер выключается, данные сохраняются suspend_on_destroy = true
vDC suspend suspend_on_destroy = true
Edge не трогается: у эджа нет операции suspend keep_on_destroy = true
SNAT не выключается keep_on_destroy = true
Квота внешних IP не меняется: адреса держит кластер keep_on_destroy = true

Следующий terraform apply усыновит объекты по имени и разморозит кластер и vDC (adopt_existing_on_create = true → resume). Организация не удаляется никогда.

Полное удаление — осознанно: выставьте keep_on_destroy = false и suspend_on_destroy = false, порядок — кластер → count = 0 → SNAT → Edge → vDC (vDC удаляется только через 14 дней после suspend).

Состав файлов

Файл Что делает
versions.tf версия Terraform и провайдера Nubes
provider.tf подключение к API (токен, адрес)
variables.tf все параметры с описанием
vdc.tf виртуальный датацентр
edge.tf сетевой шлюз периметра (Edge)
modifiers.tf внешние IP на организации + SNAT на шлюзе
shturval.tf Kubernetes-кластер Штурвал: переменные Штурвала, группы воркеров и сам ресурс
outputs.tf UUID и имена созданных услуг (vDC, Edge, Штурвал)
terraform.tfvars.example шаблон значений (копируется в terraform.tfvars)

terraform.tfvars с токеном никому не передавайте и не коммитьте в git.