Провайдер 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.

Создайте ключ API в панели управления

Чем управляет сегодня

Ресурс: 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.

Справочник по API