Skip to content

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