コンテンツにスキップ

Terraform

Terraformは、インフラストラクチャの構築、変更、バージョン管理を行うためのツールであり、Cloudflareリソースを構築するためのコンポーネントとドキュメントを提供します。以下に、Terraformを使用してTurnstileを始めるための例を示します。CloudflareとTerraformの設定に関するより一般的なガイドについては、TerraformとCloudflareの始め方のブログ記事をご覧ください。

Terraformを使用してTurnstileウィジェットを作成する

APIトークンを作成する

Account > Turnstile > Editの権限を持つAPIトークンを作成します。次に、このシークレットを環境変数にエクスポートする必要があります:

トークンをエクスポートする
export CLOUDFLARE_API_TOKEN=<API_TOKEN>

Turnstileウィジェットを作成する

Turnstileウィジェットを作成する際の例の設定を以下に示します。

cloudflare.tf
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とCloudflareプロバイダーを初期化する

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プランを確認する

terraform planを実行すると、提案された変更が出力されます。これにより、CloudflareアカウントIDの入力を求められます。プランを慎重に確認してください。

確認コマンド
terraform plan
var.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の変更を適用する

変更が正確であり、進めることに自信がある場合は、terraform applyコマンドを使用して適用します。

適用コマンド
terraform apply --auto-approve
var.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"

Turnstileウィジェットをインポートする

前提条件

TerraformでTurnstileウィジェットをインポートする前に、以下を行う必要があります:

TerraformでTurnstileウィジェットをインポートする

cf-terraforming generateコマンドを実行し、以下の出力を.tfファイルに追加します。

生成コマンド
cf-terraforming generate --resource-type cloudflare_turnstile_widget --account 6be2041a37d48aaaa9c686434f1709f0
resource "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 6be2041a37d48aaaa9c686434f1709f0
terraform import cloudflare_turnstile_widget.terraform_managed_resource_0x4AAAAAAAEg5sP3rwf91fe8 6be2041a37d48aaaa9c686434f1709f0/0x4AAAAAAAEk5sP3rwf91fe8
terraform import cloudflare_turnstile_widget.terraform_managed_resource_0x4AAAAAAAE0gwg0H1StXlOx 6be2041a37d48aaaa9c686434f1709f0/0x4AAAAAAAE0wwg0H1StXlOx
terraform import cloudflare_turnstile_widget.terraform_managed_resource_0x4AAAAAAAE2z4LbxEka5UBh 6be2041a37d48aaaa9c686434f1709f0/0x4AAAAAAAF1z4LbxEka5UBh