Files
home-cluster/terraform/cloudflare/main.tf
T
renovate[bot] cff0bf3e83 feat(terraform): update terraform cloudflare to 3.33.1 (#615)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-01-28 06:30:11 -05:00

94 lines
2.3 KiB
Terraform

terraform {
required_providers {
cloudflare = {
source = "cloudflare/cloudflare"
version = "3.33.1"
}
http = {
source = "hashicorp/http"
version = "3.2.1"
}
sops = {
source = "carlpett/sops"
version = "0.7.2"
}
}
}
data "sops_file" "cloudflare_secrets" {
source_file = "secret.sops.yaml"
}
provider "cloudflare" {
email = data.sops_file.cloudflare_secrets.data["cloudflare_email"]
api_key = data.sops_file.cloudflare_secrets.data["cloudflare_apikey"]
}
data "cloudflare_zones" "domain" {
filter {
name = data.sops_file.cloudflare_secrets.data["cloudflare_domain"]
}
}
resource "cloudflare_zone_settings_override" "cloudflare_settings" {
zone_id = lookup(data.cloudflare_zones.domain.zones[0], "id")
settings {
ssl = "strict"
always_use_https = "on"
min_tls_version = "1.2"
opportunistic_encryption = "on"
tls_1_3 = "zrt"
automatic_https_rewrites = "on"
universal_ssl = "on"
browser_check = "on"
challenge_ttl = 1800
privacy_pass = "on"
security_level = "medium"
brotli = "on"
minify {
css = "on"
js = "on"
html = "on"
}
rocket_loader = "on"
always_online = "off"
development_mode = "off"
http3 = "on"
zero_rtt = "on"
ipv6 = "on"
websockets = "on"
opportunistic_onion = "on"
pseudo_ipv4 = "off"
ip_geolocation = "on"
email_obfuscation = "on"
server_side_exclude = "on"
hotlink_protection = "off"
security_header {
enabled = false
}
}
}
data "http" "ipv4" {
url = "http://ipv4.icanhazip.com"
}
resource "cloudflare_record" "ipv4" {
name = "ipv4"
zone_id = lookup(data.cloudflare_zones.domain.zones[0], "id")
value = chomp(data.http.ipv4.response_body)
proxied = true
type = "A"
ttl = 1
}
resource "cloudflare_record" "root" {
name = data.sops_file.cloudflare_secrets.data["cloudflare_domain"]
zone_id = lookup(data.cloudflare_zones.domain.zones[0], "id")
value = "ipv4.${data.sops_file.cloudflare_secrets.data["cloudflare_domain"]}"
proxied = true
type = "CNAME"
ttl = 1
}