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。
目前管理的内容
资源: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>。