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の管理下に置くにはどうすればよいですか?

スラッシュで区切ったドメイン ID とレコード ID を指定して terraform import を実行します (例: terraform import zinn_dns_record.www <domain_id>/<record_id>)。

すべてのエンドポイントを探索

プロバイダーがまだ管理していない機能はすべてAPIで利用可能であり、APIリファレンスにエンドポイントごとに説明されています。

API リファレンス