diff --git a/fullpipe_chain/.terraform.lock.hcl b/fullpipe_chain/.terraform.lock.hcl new file mode 100644 index 0000000..3275ed1 --- /dev/null +++ b/fullpipe_chain/.terraform.lock.hcl @@ -0,0 +1,13 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "tf-registry.containerk8s.services.ngcloud.ru/nubes-dev/nubes" { + version = "2.0.23" + constraints = "2.0.23" + hashes = [ + "h1:Eq+cA5R1pnQBRwbAIsIKhXeFM9bJmJ1Dee/VitxcFOE=", + "zh:25f4b35fac44b72153a89e8d5128984d5ed7d41d25cd9dac50e03f281f3a3ea4", + "zh:c13cfb7e6a5e25eea5414b262e6ed08d0e86913e055e33721acc1c152c828981", + "zh:c8b0972b72eb38be128510d91940f817279ec9a5c1cce5d660ce9c5991238d47", + ] +} diff --git a/fullpipe_chain/README.md b/fullpipe_chain/README.md index abad55a..491ee26 100644 --- a/fullpipe_chain/README.md +++ b/fullpipe_chain/README.md @@ -23,7 +23,9 @@ git clone https://gitea.services.ngcloud.ru/Nail/tf_examples.git cd tf_examples/fullpipe_chain ``` -## 2. Возьмите значения в ЛК +## 2. Возьмите обязательные значения в ЛК + +Эти значения нельзя оставлять примерами: их нужно заменить на значения вашей организации и доступного ресурсного пула. | Значение | Где взять | Пример | |---|---|---| @@ -31,11 +33,18 @@ cd tf_examples/fullpipe_chain | `organization` | ЛК → услуга «Организация в Cloud Director» → название услуги | `organ` | | `vdc_network_provider` | ЛК → создание vDC → «Сетевой провайдер» | `snb1` | | `vdc_provider_vdc` | ЛК → создание vDC → «Provider VDC» | `Intel Broadwell 2.4` | -| `vdc_storage_config` | ЛК → создание vDC → доступные дисковые политики | `SATA` | +| `vdc_storage_config` | ЛК → создание vDC → доступные дисковые политики; в шаблоне укажите имя политики и размер в JSON-массиве | `[{"name":"SATA","size":"200"}]` | | `ip_space_name` | ЛК → карточка организации → внешние IP | `internet-ipv4-v1` | | `vm_user_public_key` | содержимое `~/.ssh/id_ed25519.pub` (`ssh-keygen` создаст пару, если её нет) | `ssh-ed25519 AAAA...` | -Остальные значения уже подставлены в `terraform.tfvars.example` — меняйте, если нужно. +`vdc_network_provider`, `vdc_provider_vdc` и `vdc_storage_config` должны быть совместимы +с одним ресурсным пулом, который вы выбираете при создании vDC. Если в вашем ЛК другие +названия, подставьте их из ЛК, а не оставляйте значения примера. + +Остальные значения в шаблоне — рабочие значения по умолчанию для этой цепочки. +Имена услуг (`*_resource_name`), имена vApp/ВМ/кластера и параметры размеров можно +изменить; имена должны быть уникальны в вашей организации. `api_token` и публичный +SSH-ключ обязательно замените на свои значения. ## 3. Заполните terraform.tfvars @@ -44,12 +53,15 @@ cp terraform.tfvars.example terraform.tfvars nano terraform.tfvars # подставьте значения из шага 2 ``` -Полный список параметров — в `variables.tf`, у каждой переменной есть описание. +Проверьте, что в файле не остались `eyJhbGciOi...`, `AAAA...`, `organ`, `null` или +чужие имена ресурсов. Полный список параметров — в `variables.tf`, у каждой переменной +есть описание. ## 4. Выполните команды ```bash terraform init # один раз — скачает провайдер +terraform validate # проверит синтаксис и типы до обращения к API terraform plan # покажет, что будет создано (7 ресурсов: vDC, Edge, IP, SNAT, vApp, ВМ, Штурвал) terraform apply # создаст (подтвердить: yes) ``` diff --git a/fullpipe_chain/terraform.tfvars.example b/fullpipe_chain/terraform.tfvars.example index bb17628..a2ef8e3 100644 --- a/fullpipe_chain/terraform.tfvars.example +++ b/fullpipe_chain/terraform.tfvars.example @@ -2,18 +2,20 @@ # Шаблон значений для fullpipe_chain. # # 1. Скопируйте файл: cp terraform.tfvars.example terraform.tfvars -# 2. Заполните значения ниже (откуда брать — в комментариях и в README.md). +# 2. Замените обязательные значения ниже на свои (источник — README.md и комментарии). # 3. terraform.tfvars НЕ публикуйте и не коммитьте: в нём токен доступа. # ============================================================================= -# ЛК → Профиль → Токены → «Технический» +# ОБЯЗАТЕЛЬНО: ЛК → Профиль → Токены → «Технический». +# Не оставляйте примерный токен и не передавайте настоящий токен коллегам. api_token = "eyJhbGciOi..." -# Название услуги «Организация в Cloud Director» в ЛК (например: organ). -# Организацию создайте заранее в ЛК — Terraform её не создаёт и не удаляет. +# ОБЯЗАТЕЛЬНО: точное название услуги «Организация в Cloud Director» в ЛК. +# Организацию создайте заранее в ЛК; Terraform её не создаёт и не удаляет. organization = "organ" -# Имя ipSpace для внешнего IP. Смотреть в ЛК в карточке организации. +# ОБЯЗАТЕЛЬНО: имя доступного ipSpace из карточки организации в ЛК. +# Для ВМ и Штурвала нужен внешний доступ через этот ipSpace. ip_space_name = "internet-ipv4-v1" # Сколько внешних IP выделить (строкой): 3 держит кластер Штурвал, 4-й — внешний адрес ВМ. ip_count = "4" @@ -22,9 +24,11 @@ ip_count = "4" # Имя vDC в ЛК — любое. vdc_resource_name = "fullpipe-vdc" -# ЛК → создание vDC → «Сетевой провайдер» +# ОБЯЗАТЕЛЬНО: ЛК → создание vDC → «Сетевой провайдер». +# Значение должно быть доступно в выбранном ресурсном пуле. vdc_network_provider = "snb1" -# ЛК → создание vDC → «Provider VDC» +# ОБЯЗАТЕЛЬНО: ЛК → создание vDC → «Provider VDC». +# Выбирайте Provider VDC из того же пула, что и сетевой провайдер. vdc_provider_vdc = "Intel Broadwell 2.4" # vCPU, шт. Кластер Штурвал занимает 8 vCPU (2 ноды × 4), поэтому для ВМ нужен запас. vdc_cpu_allocated = 12 @@ -32,8 +36,8 @@ vdc_cpu_allocated = 12 vdc_cpu_guaranteed = 0 # RAM, ГБ vdc_mem_allocated = 32 -# Дисковая политика: JSON-массив, name — имя политики из ЛК, size — размер в ГБ. -# Пример: политика SATA, 200 ГБ. +# ОБЯЗАТЕЛЬНО проверить в ЛК: политика должна быть доступна выбранному Provider VDC. +# Формат — JSON-массив; name — точное имя политики, size — размер в ГБ. vdc_storage_config = "[{\"name\":\"SATA\",\"size\":\"200\"}]" # --- Edge (сетевой шлюз периметра) ---