# ============================================================================= # 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 # # 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 }