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_key 参数或 ZINN_API_KEY 环境变量中读取每个组织的 API 密钥。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 提供程序?

是的。请使用来自 Terraform Registry 的 source = "zinn-digital/zinn"。目前它负责管理 DNS 记录,并读取站点、域名、方案以及主机托管区域。

Terraform 可以创建站点或邮箱吗?

尚不可用。网站、邮箱和套餐均在控制面板中通过 API、SDK 或 Zinnector® CLI 进行管理。服务商负责管理 DNS 记录并读取其余内容。

如何将现有的 DNS 记录纳入 Terraform 管理之下?

运行带有以斜杠分隔的 domain id 和 record id 的 terraform import,例如 terraform import zinn_dns_record.www <domain_id>/<record_id>。

探索每个端点

提供商尚未管理的任何内容均可在 API 中获取,该 API 在 API 参考中按端点进行了逐一说明。

API 参考