Skip to content

🚀 Docker Swarm sur Hetzner Cloud avec Terraform Cloud

Infrastructure 100% automatisée pour déployer un cluster Docker Swarm production-ready sur Hetzner Cloud via Terraform Cloud UI.

⚡ Quick Start (5 minutes)

  1. Token Hetzner : console.hetzner.cloud → Security → API Tokens → Generate
  2. Terraform Cloud : app.terraform.io → New Workspace → docker-swarm-hetzner
  3. Variables : HCLOUD_TOKEN dans Environment Variables (Sensitive ✓)
  4. Upload : Tous les fichiers → Upload configuration
  5. Deploy : Start new run → Confirm & Apply

C'est fait ! Votre cluster est prêt en 5 minutes.

💰 Coût Total : ~46€/mois

Ressource Specs Prix
3 Managers CX21 (2vCPU, 4GB) 17.49€
3 Workers CX11 (1vCPU, 2GB) 9.87€
Load Balancer LB11 5.83€
Volumes 230GB 9.20€
Floating IPs 3x IPv4 3.57€

🎯 Ce qui est déployé

  • Cluster Docker Swarm haute disponibilité
  • Load Balancer avec health checks
  • Monitoring : Prometheus + Grafana + Portainer
  • Réseau privé sécurisé (gratuit)
  • Firewall configuré automatiquement
  • Backups quotidiens automatiques
  • 100% Infrastructure as Code

📚 Documentation

Guides Essentiels

Ressources

🏗️ Structure du Projet

.
├── README.md                     # Ce fichier
├── main.tf                       # Configuration Terraform Cloud
├── variables.tf                  # Variables Hetzner
├── outputs.tf                    # Outputs (IPs, URLs, etc.)
├── resources.tf                  # Ressources Hetzner
├── terraform.auto.tfvars         # Configuration par défaut
├── terraform.tfvars.example      # Exemple de configuration
├── docs/                         # Documentation complète
│   ├── QUICK-START.md           # Guide rapide
│   ├── TERRAFORM-CLOUD-UI-GUIDE.md  # Guide UI détaillé
│   ├── README-TERRAFORM-CLOUD.md    # Configuration Terraform Cloud
│   └── COST-CALCULATOR.md       # Calculateur de coûts
├── scripts/                      # Scripts d'initialisation
│   ├── cloud-init-manager.yaml  # Init managers
│   └── cloud-init-worker.yaml   # Init workers
└── examples/                     # Exemples
    └── deploy-stack.sh           # Déploiement d'application

🔧 Configuration Minimale

Variables Requises (dans Terraform Cloud UI)

# Environment Variables
HCLOUD_TOKEN = "votre-token-hetzner"  # Sensitive ✓

# Terraform Variables
terraform_cloud_organization = "votre-org"
terraform_cloud_workspace = "docker-swarm-hetzner"
hcloud_token = "votre-token-hetzner"  # Sensitive ✓

Variables Optionnelles

Variable Défaut Description
manager_count 3 Nombre de managers
worker_count 3 Nombre de workers
location nbg1 Datacenter (nbg1, fsn1, hel1)
manager_server_type cx21 Type serveur managers
worker_server_type cx11 Type serveur workers

🌐 Accès aux Services

Après déploiement, récupérez les URLs dans Terraform Cloud → Outputs :

  • Application : http://[load-balancer-ip]
  • Portainer : http://[manager-ip]:9000
  • Grafana : http://[manager-ip]:3000 (admin/admin)
  • Prometheus : http://[manager-ip]:9090

🚢 Déployer une Application

# SSH vers le manager (clé dans Outputs)
ssh -i swarm-key.pem root@[manager-ip]

# Déployer une stack
docker stack deploy -c docker-compose.yml myapp

# Vérifier
docker service ls

Ou utilisez le script fourni :

./examples/deploy-stack.sh

💡 Points Forts

Pourquoi Hetzner ?

  • 10x moins cher que les autres cloud providers
  • Performance : AMD EPYC, NVMe SSD, 25 Gbit/s
  • Écologique : 100% énergie renouvelable
  • Européen : RGPD compliant, datacenters EU
  • Simple : Interface claire, excellente documentation

Pourquoi cette solution ?

  • 100% UI : Pas de terminal nécessaire
  • Idempotent : Terraform gère l'état
  • Production-ready : HA, monitoring, backups
  • Scalable : Ajustez les variables pour grandir
  • Sécurisé : Firewall, réseau privé, fail2ban

🔄 Opérations Courantes

Scaling

# Dans Terraform Cloud Variables
worker_count = 5  # Au lieu de 3
# → Start new run → Apply

Mise à jour

# Drain node
docker node update --availability drain worker-1
# Update via Terraform
# Reactivate
docker node update --availability active worker-1

Monitoring

  • Grafana dashboards pré-configurés
  • Métriques Prometheus
  • Logs centralisés

🆘 Support

📝 License

MIT - Utilisez librement cette infrastructure !


💡 Astuce : Commencez avec la configuration par défaut (46€/mois) et ajustez selon vos besoins.

🎁 Bonus : Hetzner offre 20€ de crédit aux nouveaux comptes !

⚡ Performance : Infrastructure équivalente coûterait 300-500€/mois ailleurs.


Commentaires