48 lines
1.8 KiB
Markdown
48 lines
1.8 KiB
Markdown
# N DNS-зон, сгенерированных программно (в цикле)
|
||
|
||
Пример-близнец `../dns_zones/`, но здесь зоны **не задаются вручную**, а
|
||
генерируются из числа `var.zone_count`:
|
||
|
||
```hcl
|
||
zones = {
|
||
for i in range(1, var.zone_count + 1) :
|
||
"${var.zone_prefix}-${i}" => {
|
||
zone_name = "${var.zone_prefix}-${i}.${var.zone_domain}"
|
||
records = { www = ..., api = ... }
|
||
}
|
||
}
|
||
```
|
||
|
||
Удобно, когда зон много и они однотипны (напр. 10 зон `tfzone-1 … tfzone-10`).
|
||
|
||
## Ресурсы
|
||
|
||
| Ресурс | Сервис | Назначение |
|
||
|---|---|---|
|
||
| `nubes_zones_v2` | 109 | DNS-зона |
|
||
| `nubes_zones_v2_record` | подресурс зоны | Запись внутри зоны (A / CNAME / …) |
|
||
|
||
## Разница с `../dns_zones/`
|
||
|
||
| | `dns_zones` | `dns_zones_generated` |
|
||
|---|---|---|
|
||
| Источник зон | явная карта `var.zones` | `range(1, zone_count+1)` в `locals` |
|
||
| Когда удобно | разный набор зон/записей | много однотипных зон |
|
||
|
||
## Как запустить
|
||
|
||
```bash
|
||
cp terraform.tfvars.example terraform.tfvars # при желании: zone_count = N
|
||
# api_token — в secrets.auto.tfvars (НЕ в terraform.tfvars!)
|
||
terraform init
|
||
terraform plan
|
||
terraform apply # запускает пользователь
|
||
```
|
||
|
||
## Проверки
|
||
|
||
- После `apply` повторный `plan` должен давать `No changes`.
|
||
- Изменение `zone_count` добавляет/убирает зоны (стабильные адреса `for_each`).
|
||
- Чтобы зоны работали в интернете, домен у регистратора надо делегировать на NS
|
||
`ns3.ngcloud.ru` / `ns4.ngcloud.ru`.
|