hcornet ea5135230d
Terraform Apply / Terraform Apply (push) Failing after 2m22s
fix : 2 fichiers
2026-07-31 10:06:12 +02:00
2026-07-31 10:03:10 +02:00
2025-11-19 11:57:53 +00:00
2025-11-04 10:33:14 +01:00
2026-07-31 09:50:42 +02:00
2025-11-04 10:33:14 +01:00
2026-07-31 09:50:42 +02:00
2026-07-31 09:50:42 +02:00
2026-07-31 09:50:42 +02:00
fix
2026-07-31 09:54:58 +02:00
fix
2026-07-31 09:54:58 +02:00
2026-07-31 09:50:42 +02:00
2025-11-20 19:30:27 +01:00
2026-07-31 09:50:42 +02:00
2026-07-31 09:50:42 +02:00

terraform-cloudflare-tunnel-zone-org

Bibliothèque d'exemples Cloudflare Zero Trust gérés par Terraform, construite autour d'un tunnel Cloudflare « home lab » sur la zone tips-of-mine.org.

Inspiré de macharpe/terraform-cloudflare-zero-trust-demo, adapté à une stack Vault (miroir OpenBao) + Authentik + Gitea Actions, et enrichi de briques supplémentaires.

📋 Avant tout apply : lire ACTIONS_EXTERNES.md — tout ce que Terraform ne peut pas faire (secrets Vault à créer, sshd à configurer, connecteurs à installer...) y est détaillé brique par brique.

Les briques

Les fichiers suivent la navigation du dashboard Cloudflare Zero Trust (Section-SousSection-Nom.tf).

Cœur — tunnel & applications

Fichier Contenu
main.tf Secrets Vault, locals, construction des règles d'ingress
Networks-Connectors-Cloudflare_Tunnels.tf Tunnels cloudflared (home + clouds)
Networks-Routes-cidr.tf Routes réseau, DNS des applications, config d'ingress du tunnel
Networks-Routes-Virtual_Networks.tf Réseaux virtuels par cloud
variables.auto.tfvarsapplications La map des applications exposées : ajouter une entrée = DNS + ingress créés au prochain apply

Identité — deux briques IdP interchangeables

Brique Fichiers Activation
Authentik (OIDC) Integrations-Identity_providers.tf, Access_Controls-Policies-Rule_Groups.tf toujours active
Azure Entra ID Integrations-Identity_providers.tf, Access_Controls-Policies-Rule_Groups-Azure.tf azure_idp_enabled = true + secret Vault secret/azure

Les deux alimentent les mêmes concepts : rule groups, politiques réutilisables, enrôlement WARP.

Accès SSH — deux approches comparées

Brique Fichier Principe
Certificats éphémères Access_Controls-Service_Auth-Short_Lived_Certificates.tf + apps Infrastructure/ssh Cloudflare signe un certificat SSH de quelques secondes à chaque connexion — aucune clé à distribuer
Clé SSH classique Access_Controls-Applications-ssh_key_based.tf Paire de clés ED25519 générée par Terraform, publiée via le tunnel — montre les limites (clé dans le state, rotation manuelle)

Agent WARP (postes de travail)

Fichier Contenu
Team_Resources-Devices-Enrollment_Permissions.tf Qui peut enrôler son poste (app type warp, MFA, domaine mail)
Team_Resources-Devices-Device_posture.tf Postures gérées par Terraform : WARP actif, pare-feu, disque chiffré, version d'OS
Team_Resources-Devices-Device_profiles.tf Profils WARP par OS

Sites distants d'entreprise

Brique Fichier Principe
Tunnels par site Networks-Routes-Remote_Sites.tf Un cloudflared + un réseau virtuel par agence — CIDR identiques entre sites (cas réel post-fusion), isolés par réseau virtuel
WARP Connector Networks-Connectors-WARP_Connector.tf Connectivité bidirectionnelle site↔site (création manuelle du connecteur, tokens récupérés par Terraform)

Politiques de trafic (Gateway)

Fichier Contenu
Traffic_Policies-Firewall_Policies-DNS.tf Blocage malware + liste publicitaire Pi-hole (mise à jour quotidienne par action-update-lists.yml)
Traffic_Policies-Firewall_Policies-HTTP.tf Gouvernance IA, filtrage contenu, RBI (webmail isolé, sous licence)
Traffic_Policies-Firewall_Policies-Network.tf Anti-mouvement latéral (SSH/RDP/SMB/WinRM/DB), contrôle RDP
Traffic_Policies-Firewall_Policies-DLP.tf Profil DLP IBAN + politique de blocage (sous licence)

Observabilité & M2M

Fichier Contenu
Insights-Digital_Experience-Tests.tf Tests DEX (HTTP + traceroute) exécutés par les postes WARP
Insights-Logs-Logpush.tf Export des logs Gateway vers S3/R2/SIEM (logpush_enabled)
Access_Controls-Service_Auth-Service_Tokens.tf Accès machine-to-machine (CI) par service token

Prérequis

Token API Cloudflare (stocké dans Vault : secret/cloudflare, clé api_token)

Type Item Permission Mandatory
Account Cloudflare Tunnel Edit Required
Account Zero Trust Edit Required
Account Access: Apps and Policies Edit Required
Account Access: Service Tokens Edit Required
Account Zero Trust: PII Read Recommended
Account Account Settings Read Recommended
Zone DNS Edit Required
Zone Zone Read Recommended

Démarrage manuel

git clone https://gitea.tips-of-mine.com/terraform-cloudflare-tunnel-zone-org.git
cd terraform-cloudflare-tunnel-zone-org

Utilisation du repository

init

terraform init

validation

terraform validate

plan (le token Vault est demandé, ou via TF_VAR_vault_token)

terraform plan

CI/CD (Gitea Actions)

Workflow Déclencheur Rôle
validate.yml pull request fmt + validate + plan
cicd.yml push sur main plan + apply
action-update-lists.yml cron quotidien met à jour la liste Pi-hole et ouvre une PR

Secrets Gitea nécessaires : VAULT_TOKEN, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY.

Buy me a coffe

Buy Me a Coffee at ko-fi.com

S
Description
Gestion de "Zero Trust Home" chez Cloudflare avec Terraform (zone Id : org)
Readme AGPL-3.0
632 KiB
Languages
HCL 96.4%
JavaScript 3.6%