Cloudflareは先頃、cf-terraformingツールの更新バージョンをリリースした。このツールは、既存のCloudflareリソースからTerraform HCLを生成することを合理化する。新しいリリースでは、生成プロセスが簡素化され、ツールの将来性を高めるための変更が導入されている。
cf-terraformingツールは、アカウントの資格情報を使用して、アカウントに存在するCloudflareリソースからTerraformを生成する。環境変数のように使用されるAPIトークンの形式をとる資格情報が推奨される。APIトークンアプローチでは、アクセス可能なリソースの制限ができる。
Terraform構成ファイルを生成するためには、次の generate
コマンドを使用する:
cf-terraforming generate --resource-type cloudflare_record --zone <zone_id> >> cloudflare.tf
これは、特定のリソースタイプのCloudflare APIを介してアカウントリソースにアクセスする。注意は、一度に生成できるのは1つのリソースのHCL構成のみということだ。cf-terraformingでサポートされているリソースの完全なリストは、GitHubリポジトリにある。ゾーンは、DNSレコードをフェッチするためのCloudflareゾーンIDだ。上記のコマンドは、次のような出力を生成する:
resource "cloudflare_record" "terraform_managed_resource_db185030f44e358e1c2162a9ecda7253" {
name = "example.com"
proxied = false
ttl = 120
type = "A"
value = "198.51.100.4"
zone_id = "0da42c8d2132a9ddaf714f9e7c920711"
}
これにより、terraform_managed_resource_<resourceid>
の標準的な命名規則でリソースが出力される。リソースIDを含めることにより、エクスポートされた構成のオブジェクト名と入力された状態は一貫性が保たれる。
この時、構成のインポートには追加の手順がある。開発チームによると、将来は自動化される予定だ。今のところ、cf-terraformingには、生成されたTerraform構成を取得し、適切なTerraformインポートステートメントを生成するために import
コマンドがある。
cf-terraforming import --resource-type cloudflare_record --zone <zone_id>
これにより、terraform import
コマンドを実行する準備が整った。生成されたコマンドを実行すると、リソースの状態が terraform.tfstate ファイルにインポートされる。それが完了すると、terraform plan
を呼び出して、すべてが正しくインポートされたことを確認できる。
この新しいリリースで、Cloudflareチームは cf-terraforming の実装を改善し、独自の更新プロセスを将来にわたって保証できるようにした。CloudflareのプロダクトディレクターであるGarret Galow氏は、次のように述べた:
Terraformプロバイダでサポートされているおよそ48個のリソースごとにtfconfigとtfstateの両方の生成を手作業で行う代わりに、同様のリソースタイプで必要なものをより自動的に生成するためにTerraformの機能を活用するようになりました。
チームは、CLIツールの terraform-exec を使用して、terraform-provider-cloudflareプロバイダのJSONスキーマを確認する。これはCloudflare APIのレスポンスフィールドをtfconfigに自動的に追加するJSONスキーマにより簡単にマッピングするために使用される。このアプローチでは、Terraformプロバイダへの変更は、cf-terraforming へのマイナな変更のみが必要となる。
cf-terraforming はオープンソースであり、terraform-provider-cloudflare 同様GitHubで利用可能だ。このツールは、Terraform と少なくとも Go v1.12.x がインストールされていることが必要だ。