Terraform
Terraform ↗は、インフラストラクチャの構築、変更、バージョン管理を行うためのツールであり、Cloudflareリソース ↗を構築するためのコンポーネントとドキュメントを提供します。以下に、Terraformを使用してTurnstileを始めるための例を示します。CloudflareとTerraformの設定に関するより一般的なガイドについては、TerraformとCloudflareの始め方 ↗のブログ記事をご覧ください。
Account > Turnstile > Editの権限を持つAPIトークンを作成します。次に、このシークレットを環境変数にエクスポートする必要があります:
export CLOUDFLARE_API_TOKEN=<API_TOKEN>Turnstileウィジェットを作成する際の例の設定を以下に示します。
terraform { required_providers { cloudflare = { source = "cloudflare/cloudflare" version = "~> 4" } }}
variable "account_id" { description = "あなたのCloudflareアカウントID。" # 例: 6be2041a37d48aaaa9c686434f1709f0}
resource "cloudflare_turnstile_widget" "example" { account_id = var.account_id name = "私のTerraform管理ウィジェット" domains = ["example.com"] mode = "managed"}
output "turnstile_example_sitekey" { description = "サイトキー" value = cloudflare_turnstile_widget.example.id # 注: `id`はあなたのサイトキーです。}
output "turnstile_example_secretkey" { description = "シークレットキー" value = cloudflare_turnstile_widget.example.secret sensitive = true}terraform initコマンドを実行して、Terraform作業ディレクトリを設定し、Cloudflareサービスと対話できるようにします。このプロセスでは、必要なプロバイダープラグインをダウンロードし、状態ファイルのバックエンドストレージを確立し、設定データを保存するためのローカル.terraformディレクトリを作成します。
terraform initバックエンドを初期化中...
プロバイダープラグインを初期化中...- 依存関係ロックファイルからcloudflare/cloudflareの以前のバージョンを再利用- cloudflare/cloudflare v4.5.0をインストール中...- cloudflare/cloudflare v4.5.0をインストールしました(自己署名、キーID C76001609EE3B136)
パートナーおよびコミュニティプロバイダーは、開発者によって署名されています。プロバイダーの署名について詳しく知りたい場合は、こちらをお読みください:https://www.terraform.io/docs/cli/plugins/signing.html
Terraformは正常に初期化されました!
これでTerraformを使用して作業を開始できます。「terraform plan」を実行して、インフラストラクチャに必要な変更を確認してください。すべてのTerraformコマンドは、今後正常に動作するはずです。
Terraformのモジュールやバックエンド設定を設定または変更した場合は、このコマンドを再実行して作業ディレクトリを再初期化してください。忘れた場合、他のコマンドがそれを検出し、必要に応じて再初期化するようにリマインドします。terraform planを実行すると、提案された変更が出力されます。これにより、CloudflareアカウントIDの入力を求められます。プランを慎重に確認してください。
terraform planvar.account_id あなたのCloudflareアカウントID。
値を入力してください: 6be2041a37d48aaaa9c686434f1709f0
Terraformは選択したプロバイダーを使用して、以下の実行プランを生成しました。リソースアクションは以下の記号で示されます: + create
Terraformは以下のアクションを実行します:
# cloudflare_turnstile_widget.exampleが作成されます + resource "cloudflare_turnstile_widget" "example" { + account_id = "6be2041a37d48aaaa9c686434f1709f0" + domains = [ + "example.com", ] + id = (適用後に知られる) + mode = "managed" + name = "私のTerraform管理ウィジェット" + secret = (センシティブ値) }
プラン: 1を追加、0を変更、0を削除。
出力の変更: + turnstile_example_secretkey = (センシティブ値) + turnstile_example_sitekey = (適用後に知られる)
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
注: -outオプションを使用してこのプランを保存しなかったため、Terraformは「terraform apply」を実行しても正確にこれらのアクションを実行できることを保証できません。変更が正確であり、進めることに自信がある場合は、terraform applyコマンドを使用して適用します。
terraform apply --auto-approvevar.account_id あなたのCloudflareアカウントID。
値を入力してください: 6be2041a37d48aaaa9c686434f1709f0
Terraformは選択したプロバイダーを使用して、以下の実行プランを生成しました。リソースアクションは以下の記号で示されます: + create
Terraformは以下のアクションを実行します:
# cloudflare_turnstile_widget.exampleが作成されます + resource "cloudflare_turnstile_widget" "example" { + account_id = "6be2041a37d48aaaa9c686434f1709f0" + domains = [ + "example.com", ] + id = (適用後に知られる) + mode = "managed" + name = "私のTerraform管理ウィジェット" + secret = (センシティブ値) }
プラン: 1を追加、0を変更、0を削除。
出力の変更: + turnstile_example_secretkey = (センシティブ値) + turnstile_example_sitekey = (適用後に知られる)cloudflare_turnstile_widget.example: 作成中...cloudflare_turnstile_widget.example: 1秒後に作成完了 [id=0x4AAAAAAAEe4wQdBshJxBeK]
適用完了!リソース: 1追加、0変更、0削除。
出力:
turnstile_example_secretkey = <センシティブ>turnstile_example_sitekey = "0x4AAAAAAAEe4wQdBshJxBeK"Turnstileウィジェットを正常に作成しました。設定と分析をユーザーフレンドリーなインターフェースで表示するには、Cloudflareダッシュボード ↗に移動してください。
terraform outputを使用してシークレットキーを取得します。
terraform output turnstile_example_secretkey"0x4AAAAAAAEe4xWueFq9yX8ypjlimbk1Db4"TerraformでTurnstileウィジェットをインポートする前に、以下を行う必要があります:
cf-terraforming generateコマンドを実行し、以下の出力を.tfファイルに追加します。
cf-terraforming generate --resource-type cloudflare_turnstile_widget --account 6be2041a37d48aaaa9c686434f1709f0resource "cloudflare_turnstile_widget" "terraform_managed_resource_0x4AAAAAAAEk5sP3rwf91fe8" { account_id = "6be2041a37d48aaaa9c686434f1709f0" domains = ["example.net"] mode = "managed" name = "テストサイト" region = "world"}
resource "cloudflare_turnstile_widget" "terraform_managed_resource_0x4AAAAAAAE0wwg0H1StXlOx" { account_id = "6be2041a37d48aaaa9c686434f1709f0" domains = ["example.com"] mode = "managed" name = "私のTerraform管理ウィジェット"}
resource "cloudflare_turnstile_widget" "terraform_managed_resource_0x4AAAAAAAF1z4LbxEka5UBh" { account_id = "6be2041a37d48aaaa9c686434f1709f0" domains = ["example.org"] mode = "managed" name = "私のウェブサイト"}cf-terraforming importコマンドを実行し、以下の結果コマンドを実行します。
cf-terraforming import --resource-type cloudflare_turnstile_widget --account 6be2041a37d48aaaa9c686434f1709f0terraform import cloudflare_turnstile_widget.terraform_managed_resource_0x4AAAAAAAEg5sP3rwf91fe8 6be2041a37d48aaaa9c686434f1709f0/0x4AAAAAAAEk5sP3rwf91fe8terraform import cloudflare_turnstile_widget.terraform_managed_resource_0x4AAAAAAAE0gwg0H1StXlOx 6be2041a37d48aaaa9c686434f1709f0/0x4AAAAAAAE0wwg0H1StXlOxterraform import cloudflare_turnstile_widget.terraform_managed_resource_0x4AAAAAAAE2z4LbxEka5UBh 6be2041a37d48aaaa9c686434f1709f0/0x4AAAAAAAF1z4LbxEka5UBh