# N DNS-зон, сгенерированных циклом То же, что `../dns_zones/`, но зоны не перечисляются руками — генерируются из одного числа `zone_count`. ## Что получится после `apply` По умолчанию — 10 зон `tfzone-1.test … tfzone-10.test`, по 2 записи в каждой: | Зона | Записи | |---|---| | `tfzone-1.test` | `www` → A `10.0.1.1` · `api` → A `10.0.1.2` | | `tfzone-2.test` | `www` → A `10.0.2.1` · `api` → A `10.0.2.2` | | … | … | Адреса зависят от номера зоны: `10.0.<номер>.1` и `10.0.<номер>.2`. ## Когда этот вариант удобнее Зон много и они однотипны (например 100 поддоменов). Вместо перечисления — одно число. | | `dns_zones` | `dns_zones_generated` | |---|---|---| | Источник зон | карта `zones` | `range(1, zone_count + 1)` | | Когда | разный набор зон/записей | много однотипных зон | ## Быстрый старт ```bash cd dns_zones_generated cp terraform.tfvars.example terraform.tfvars # 1. Создайте secrets.auto.tfvars (токен — СЕКРЕТ, НЕ в terraform.tfvars): # api_token = "" # JWT берётся в ЛК: Профиль → Токены. terraform init terraform plan terraform apply ``` ## Настройка В `terraform.tfvars`: | Переменная | Дефолт | Что делает | |---|---|---| | `zone_count` | `10` | сколько зон создать | | `zone_prefix` | `tfzone` | префикс имени | | `zone_domain` | `test` | домен (суффикс FQDN) | Итоговое имя зоны = `-.`, например `tfzone-3.test`. ## Как поменять набор записей Записи заданы шаблоном в `locals.zones` (`main.tf`). По умолчанию `www` и `api`. Добавить/убрать — правьте блок `records`: ```hcl records = { www = { type = "A", values = ["10.0.${i}.1"] } api = { type = "A", values = ["10.0.${i}.2"] } db = { type = "A", values = ["10.0.${i}.3"] } # добавили третью запись } ``` ## Важно - **Токен** — только в `secrets.auto.tfvars` (файл в `.gitignore`). Никогда не коммитить. - **Чтобы зоны работали в интернете**, у регистратора делегируйте домен на NS `ns3.ngcloud.ru` / `ns4.ngcloud.ru`. - Изменение `zone_count` добавляет/убирает зоны; ключи `for_each` стабильны — существующие зоны не пересоздаются. - **Проверка**: после `apply` повторный `terraform plan` должен дать `No changes`.