71 lines
2.9 KiB
Markdown
71 lines
2.9 KiB
Markdown
# 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>"
|
||
# JWT берётся в ЛК: Профиль → Токены.
|
||
|
||
terraform init
|
||
terraform plan
|
||
terraform apply
|
||
```
|
||
|
||
## Настройка
|
||
|
||
В `terraform.tfvars`:
|
||
|
||
| Переменная | Дефолт | Что делает |
|
||
|---|---|---|
|
||
| `zone_count` | `10` | сколько зон создать |
|
||
| `zone_prefix` | `tfzone` | префикс имени |
|
||
| `zone_domain` | `test` | домен (суффикс FQDN) |
|
||
|
||
Итоговое имя зоны = `<prefix>-<i>.<domain>`, например `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`.
|