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) |
| Когда | разный набор зон/записей | много однотипных зон |
Быстрый старт
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:
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.