Провайдер Terraform
Управляйте своим DNS как кодом
Наш провайдер Terraform, zinn-digital/zinn, управляет DNS-записями для доменов вашей организации и считывает ваши сайты, домены, тарифные планы и регионы хостинга в качестве источников данных. Он опубликован в Terraform Registry и создан на базе того же публичного API, что и все остальное.
Установить
Объявите провайдера и выполните terraform init. Релизы подписаны, и Terraform проверяет подпись при загрузке провайдера.
terraform {
required_providers {
zinn = {
source = "zinn-digital/zinn"
}
}
}
# api_key falls back to ZINN_API_KEY.
provider "zinn" {}Быстрый старт
Найдите домен по имени и направьте на него www, затем выведите список регионов хостинга.
data "zinn_regions" "all" {}
data "zinn_domains" "all" {}
resource "zinn_dns_record" "www" {
domain_id = one([for d in data.zinn_domains.all.domains : d.id if d.fqdn == "example.com"])
name = "www"
type = "CNAME"
value = "example.com."
ttl = 3600
}
output "regions" { value = [for r in data.zinn_regions.all.regions : r.slug] }Аутентификация
Провайдер считывает ключ API для организации из аргумента api_key или из переменной окружения ZINN_API_KEY. Источники данных regions и plans не требуют ключа. Предоставляйте ключу только те разрешения, которые необходимы вашей конфигурации, например просмотр сайтов и управление DNS.
Чем управляет сегодня
Ресурс: zinn_dns_record
Создавайте, обновляйте, удаляйте и импортируйте DNS-записи для ваших доменов: A, AAAA, CNAME, MX, TXT, SRV и другие типы, поддерживаемые вашей зоной.
Источники данных
zinn_sites и zinn_domains считывают сведения о вашей организации. zinn_regions и zinn_plans считывают общедоступный каталог и не требуют ключа.
Создано на основе спецификации
Модели запросов и ответов провайдера генерируются на основе нашей спецификации OpenAPI, а новые версии автоматически публикуются в Terraform Registry.
Прочитать вашу инвентаризацию
Источники данных вообще не требуют ресурсов, поэтому вы можете начать с чтения того, что у вас уже есть.
# A read-only inventory of your organisation and the catalogue.
data "zinn_sites" "all" {}
data "zinn_plans" "agency" { product_line = "agency" }
output "site_count" { value = length(data.zinn_sites.all.sites) }
output "agency_plans" { value = [for p in data.zinn_plans.agency.plans : p.code] }Вопросы
У вас есть провайдер Terraform?
Да. Используйте source = "zinn-digital/zinn" из Terraform Registry. В настоящее время он управляет DNS-записями и считывает сайты, домены, тарифные планы и регионы хостинга.
Может ли Terraform создавать сайты или почтовые ящики?
Пока нет. Сайты, почтовые ящики и тарифные планы управляются на панели управления, через API, SDK или Zinnector® CLI. Провайдер управляет записями DNS и считывает остальное.
Как перенести существующую DNS-запись под управление Terraform?
Запустите terraform import с идентификатором домена и идентификатором записи, разделенными косой чертой, например terraform import zinn_dns_record.www <domain_id>/<record_id>.
Изучить каждую конечную точку
Все, чем поставщик пока не управляет, доступно в API, которое подробно описано по каждой конечной точке в справочнике по API.