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の管理下に置くにはどうすればよいですか?
スラッシュで区切ったドメイン ID とレコード ID を指定して terraform import を実行します (例: terraform import zinn_dns_record.www <domain_id>/<record_id>)。