# ============================================================================= # CLOUDFLARE : Networks : Routes : Remote Sites (sites distants d'entreprise) # ============================================================================= # BRIQUE SITES DISTANTS (1/2) : approche "tunnel cloudflared par site". # # Scénario simulé : une grande entreprise avec plusieurs agences (Paris, # Lyon...). Chaque site héberge un connecteur cloudflared et publie son # réseau local dans Cloudflare. # # Point clé de l'exemple : les deux sites utilisent LE MÊME CIDR # (10.100.0.0/16). C'est un cas très réaliste (agences déployées sur le même # template réseau, fusions/acquisitions...). Les réseaux virtuels Cloudflare # permettent de faire cohabiter ces plages identiques : chaque site vit dans # son propre réseau virtuel, et le client WARP choisit le réseau virtuel # actif pour lever l'ambiguïté. # # ACTIONS EXTERNES (voir ACTIONS_EXTERNES.md) : # - Sur chaque site, installer cloudflared et le connecter avec son token : # terraform output -json remote_site_tunnel_tokens # cloudflared service install # - Pour basculer un poste WARP d'un site à l'autre : # warp-cli vnet (ou via l'UI du client WARP) # ============================================================================= #====================================================== # Un réseau virtuel par site #====================================================== resource "cloudflare_zero_trust_tunnel_cloudflared_virtual_network" "remote_sites" { for_each = var.remote_sites account_id = local.cloudflare_account_id name = "vnet-${each.key}" comment = each.value.comment is_default_network = false } #====================================================== # Un tunnel cloudflared par site #====================================================== resource "cloudflare_zero_trust_tunnel_cloudflared" "remote_sites" { for_each = var.remote_sites account_id = local.cloudflare_account_id name = "Tunnel Site ${each.key}" config_src = "cloudflare" } # Token du connecteur de chaque site (à installer sur la machine du site) data "cloudflare_zero_trust_tunnel_cloudflared_token" "remote_sites" { for_each = var.remote_sites account_id = local.cloudflare_account_id tunnel_id = cloudflare_zero_trust_tunnel_cloudflared.remote_sites[each.key].id } #====================================================== # La route de chaque site, isolée dans son réseau virtuel # (c'est ce rattachement qui autorise les CIDR identiques) #====================================================== resource "cloudflare_zero_trust_tunnel_cloudflared_route" "remote_sites" { for_each = var.remote_sites account_id = local.cloudflare_account_id network = each.value.cidr tunnel_id = cloudflare_zero_trust_tunnel_cloudflared.remote_sites[each.key].id virtual_network_id = cloudflare_zero_trust_tunnel_cloudflared_virtual_network.remote_sites[each.key].id comment = "LAN du site ${each.key}" }