50 lines
2.2 KiB
Terraform
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
|
|
}
|