Phase 4.2 — Traefik
Provisionnement de la VM via OpenTofu, configuration via Ansible.
Vue d'ensemble
Traefik est le point d'entrée unique de l'infrastructure. Il reçoit tout le trafic externe (ports 80/443) et le reverse-proxie vers les services internes.
| Rôle | Valeur |
|---|---|
| VM | 101 — traefik (192.168.1.20) |
| Nœud Proxmox | pve01 |
| Groupe Ansible | traefik |
| Sous-domaines | gitlab, vault, harbor, grafana, keycloak, defectdojo, argocd, app-* |
| TLS | Wildcard *.mounik.ovh via Let's Encrypt DNS-01 (OVH) |
| Sécurité | CrowdSec + Fail2Ban |
1. Provisionnement OpenTofu
La VM Traefik est créée juste après Vault dans l'ordre des dépendances OpenTofu.
# traefik.tf — appel au module vm
module "traefik" {
source = "./modules/vm"
name = "traefik"
target_node = "pve01"
vmid = 101
cores = 1
memory = 2048
balloon = 1024
disk_size = "20G"
ip = "192.168.1.20"
ssh_key = local.ssh_key
}
Exécution :
cd homelab-proxmox/opentofu
tofu plan -target=module.traefik -out=tfplan
tofu apply tfplan
2. Configuration Ansible
Le playbook ansible/playbooks/02-traefik.yml applique le rôle traefik :
ansible-playbook -i inventory/homelab.yml playbooks/02-traefik.yml
Le rôle traefik :
1. Installe Traefik, crée l'utilisateur et les répertoires
2. Déploie traefik.yml (template Jinja2 — entrypoints, certResolvers OVH, log)
3. Déploie .env avec les credentials OVH (depuis Vault)
4. Déploie les routes dynamiques (routes.yml.j2 — 7 routers + services)
5. Installe CrowdSec et le middleware bouncer
6. Configure la jail Fail2Ban pour Traefik
7. Installe et active le service systemd
Variables sensibles (à passer via --extra-vars ou Vault) :
- vault_ovh_application_key, vault_ovh_application_secret, vault_ovh_consumer_key
- crowdsec_bouncer_api_key
3. Vérification
systemctl status traefik
journalctl -u traefik -f
ls /etc/traefik/acme.json
dig gitlab.mounik.ovh +short
La page https://gitlab.mounik.ovh doit répondre avec un certificat valide.
Pour aller plus loin
- Phase 2 — OpenTofu — provisioning de toutes les VMs
- Phase 4.3 — Keycloak — SSO OIDC
- Playbooks Ansible — dans
ansible/du dépôt