DNS-зоны и записи (зоны — карта)
Управление доменными зонами и их записями через Terraform вместо личного кабинета. Зоны и записи задаются одной картой zones.
Что получится после apply
По умолчанию — 2 зоны, по 3 записи в каждой:
| Зона | Записи |
|---|---|
tfzone-a.test |
www → A 10.0.0.77, 203.0.113.14 · api → A · cdn → CNAME www.tfzone-a.test. |
tfzone-b.test |
www → A · api → A · cdn → CNAME |
Ресурсы
| Ресурс | Что делает |
|---|---|
nubes_zones_v2 |
DNS-зона |
nubes_zones_v2_record |
запись внутри зоны (A, CNAME, TXT, …) |
Запись — отдельный ресурс, поэтому одну запись можно изменить или удалить, не трогая зону целиком.
Быстрый старт
cd dns_zones
cp terraform.tfvars.example terraform.tfvars
# 1. Создайте secrets.auto.tfvars (токен — СЕКРЕТ, НЕ в terraform.tfvars):
# api_token = "<JWT>"
# JWT берётся в ЛК: Профиль → Токены.
terraform init
terraform plan
terraform apply
Как изменить зоны и записи
Всё лежит в переменной zones (variables.tf — дефолт, или переопределите в terraform.tfvars):
zones = {
a = {
zone_name = "tfzone-a.test"
records = {
www = { type = "A", values = ["10.0.0.77", "203.0.113.14"] } # одно имя → несколько адресов
cdn = { type = "CNAME", values = ["www.tfzone-a.test."] } # CNAME — с точкой на конце
}
}
}
Правила, которые сэкономят время:
- Ключ карты (
a,b,www…) — это адрес объекта в state. Смена ключа = «удалить + создать заново», а не «переименовать». Значение (zone_name,values) меняйте свободно. - Несколько адресов у одной записи — это один ресурс, а не несколько.
CNAMEпишется с точкой на конце (www.example.com.), иначе платформа припишет домен зоны.
Допустимые типы записей
A, AAAA, CNAME, MX, SRV, TXT, LUA, NS, SSHFP.
Важно
- Токен — только в
secrets.auto.tfvars(файл в.gitignore). Никогда не коммитить. - Чтобы зона работала в интернете, у регистратора делегируйте домен на NS
ns3.ngcloud.ru/ns4.ngcloud.ru. - Проверка: после
applyповторныйterraform planдолжен датьNo changes.
См. также
../dns_zones_generated/ — тот же сценарий, но зоны генерируются циклом из одного числа zone_count (удобно для многих однотипных зон).