INTEGRITY Dokumentace

Vytváření a správa widgetů pomocí Terraformu

Spravujte widgety Turnstile jako kód pomocí nástroje Terraform a získejte verzování i automatizované nasazování.

Předpoklady

Než začnete, budete potřebovat:

Nastavení

1. Nastavte poskytovatele

Vytvořte main.tf .

terraform {
  required_providers {
    cloudflare = {
      source  = "cloudflare/cloudflare"
      version = "~> 4.0"
    }
  }
}

provider "cloudflare" {
  api_token = var.cloudflare_api_token
}

variable "cloudflare_api_token" {
  description = "Cloudflare API Token"
  type        = string
  sensitive   = true
}

variable "account_id" {
  description = "Cloudflare Account ID"
  type        = string
}

2. Definujte widgety

resource "cloudflare_turnstile_widget" "login_form" {
  account_id = var.account_id
  name       = "Login Form Widget"
  domains    = ["example.com", "www.example.com"]
  mode       = "managed"
  region     = "world"
}

resource "cloudflare_turnstile_widget" "api_protection" {
  account_id = var.account_id
  name       = "API Protection"
  domains    = ["api.example.com"]
  mode       = "invisible"
  region     = "world"
}

# Output the sitekeys for use in your application
output "login_sitekey" {
  value = cloudflare_turnstile_widget.login_form.sitekey
}

output "api_sitekey" {
  value = cloudflare_turnstile_widget.api_protection.sitekey
}

3. Proměnné prostředí

Vytvořte .env nebo nastavte proměnné prostředí.

export TF_VAR_cloudflare_api_token="your-api-token"
export TF_VAR_account_id="your-account-id"

Příkazy Terraformu

Inicializace a plánování

Inicializace nástroje Terraform
terraform init
Změny plánu
terraform plan
Použít konfiguraci
terraform apply

Správa změn

Aktualizace konfigurace widgetu
terraform plan
Použít změny
terraform apply
Odstranění widgetů
terraform destroy

Pokročilá konfigurace nástroje Terraform

Více prostředí

locals {
  environments = {
    dev = {
      domains = ["dev.example.com"]
      mode    = "managed"
    }
    staging = {
      domains = ["staging.example.com"]
      mode    = "non_interactive"
    }
    prod = {
      domains = ["example.com", "www.example.com"]
      mode    = "invisible"
    }
  }
}

resource "cloudflare_turnstile_widget" "app_widget" {
  for_each = local.environments
  
  account_id = var.account_id
  name       = "App Widget - ${each.key}"
  domains    = each.value.domains
  mode       = each.value.mode
  region     = "world"
}

Widget s funkcemi Enterprise

resource "cloudflare_turnstile_widget" "enterprise_widget" {
  account_id     = var.account_id
  name          = "Enterprise Form"
  domains       = ["enterprise.example.com"]
  mode          = "managed"
  region        = "world"
  offlabel      = true  # Remove Cloudflare branding
  bot_fight_mode = true # Enable bot fight mode
}

Import existujících widgetů

Použijte cf-terraforming k importu stávajících widgetů.

Instalace cf-terraforming
go install github.com/cloudflare/cf-terraforming/cmd/cf-terraforming@latest
Vygenerování konfigurace Terraform z existujících widgetů
cf-terraforming generate \
  --resource-type cloudflare_turnstile_widget \
  --account $ACCOUNT_ID
Import existujícího widgetu
terraform import cloudflare_turnstile_widget.existing_widget \
  $ACCOUNT_ID/$WIDGET_SITEKEY