Files
terraform-cloudflare-tunnel…/Networks-Connectors-WARP_Connector.tf
hcornet 04e0f318f4
Terraform Apply / Terraform Apply (push) Failing after 20s
Update 31-07-2026
2026-07-31 09:50:42 +02:00

50 lines
2.2 KiB
Terraform

# =============================================================================
# CLOUDFLARE : Networks : Connectors : WARP Connector
# =============================================================================
# BRIQUE SITES DISTANTS (2/2) : approche "WARP Connector".
#
# Différence avec la brique 1 (tunnel cloudflared par site) :
# - cloudflared = trafic ENTRANT vers le site (les clients atteignent le LAN)
# - WARP Connector = trafic BIDIRECTIONNEL site <-> site et site <-> clients
# (le LAN du site peut aussi initier des connexions vers le reste du
# réseau Zero Trust : imprimantes, AD, supervision...)
#
# LIMITE ASSUMÉE : le provider Terraform ne sait pas encore créer un WARP
# Connector. On suit donc la même approche que le projet de référence
# (macharpe/terraform-cloudflare-zero-trust-demo) :
#
# ACTIONS EXTERNES (voir ACTIONS_EXTERNES.md) :
# 1. Dashboard Zero Trust > Networks > Tunnels > Create > WARP Connector,
# un par site (ex : "Site A", "Site B")
# 2. Copier l'ID de chaque connecteur dans variables.auto.tfvars
# (cloudflare_tunnel_warp_connector_site_a_id / _site_b_id)
# 3. Terraform récupère alors les tokens d'installation via l'API (data
# "http" ci-dessous) : terraform output -json warp_connector_tokens
# 4. Installer le connecteur sur une machine Linux du site :
# warp-cli connector new <token>
#
# La brique est inerte tant que les IDs sont vides.
# =============================================================================
locals {
warp_connector_sites = {
for site, id in {
site_a = var.cloudflare_tunnel_warp_connector_site_a_id
site_b = var.cloudflare_tunnel_warp_connector_site_b_id
} : site => id if id != ""
}
cloudflare_api_headers = {
"Authorization" = "Bearer ${local.cloudflare_api_token}"
"Content-Type" = "application/json"
}
}
# Récupération du token d'installation de chaque WARP Connector
data "http" "warp_connector_tokens" {
for_each = local.warp_connector_sites
url = "https://api.cloudflare.com/client/v4/accounts/${local.cloudflare_account_id}/warp_connector/${each.value}/token"
request_headers = local.cloudflare_api_headers
}