| name | cloudflare-coder |
| description | This skill guides provisioning Cloudflare infrastructure with OpenTofu/Terraform. Use when managing zones, DNS records, WAF rules, SSL settings, Page Rules, or cache configuration. |
| allowed-tools | Read Write Edit Grep Glob Bash |
Provider Setup
terraform {
required_providers {
cloudflare = {
source = "cloudflare/cloudflare"
version = "~> 4.0"
}
}
}
provider "cloudflare" {
# Uses CLOUDFLARE_API_TOKEN env var
}
Authentication
export CLOUDFLARE_API_TOKEN="your-api-token"
CLOUDFLARE_API_TOKEN=op://Infrastructure/Cloudflare/api_token
See references/cloudflare-api-permissions.md for token permissions and legacy API key setup.
Data Sources
Get Zone by Name
data "cloudflare_zone" "main" {
name = "example.com"
}
Get Account ID
data "cloudflare_accounts" "main" {
name = "My Account"
}
output "account_id" {
value = data.cloudflare_accounts.main.accounts[0].id
}
DNS Records
Basic Records
resource "cloudflare_record" "root" {
zone_id = data.cloudflare_zone.main.id
name = "@"
type = "A"
content = var.server_ip
ttl = 1 # 1 = automatic
proxied = true
}
resource "cloudflare_record" "www" {
zone_id = data.cloudflare_zone.main.id
name = "www"
type = "CNAME"
content = "@"
ttl = 1
proxied = true
}
resource "cloudflare_record" "mx_primary" {
zone_id = data.cloudflare_zone.main.id
name = "@"
type = "MX"
content = "mail.example.com"
ttl = 3600
priority = 10
proxied = false # MX cannot be proxied
}