Aller au contenu

Problèmes rencontrés

Cette section recense les difficultés techniques majeures rencontrées pendant le projet, et la façon dont elles ont été résolues — l'objectif étant de documenter le raisonnement de dépannage autant que la solution finale.

Terraform

  • Syntaxe HCL : un bloc ne peut contenir qu'un seul argument par ligne en écriture compacte — nécessité de passer en syntaxe multi-lignes pour les blocs imbriqués (ipv4 { address = ... gateway = ... }).
  • Provider non reconnu dans les modules : chaque module utilisant des ressources d'un provider tiers doit redéclarer sa source (required_providers), sinon Terraform suppose le namespace par défaut hashicorp/.
  • Divergence de state entre CLI et Semaphore : chaque couple Repository/Template Semaphore clone le code dans un dossier de travail séparé — un état (terraform.tfstate) généré en CLI n'est pas automatiquement visible depuis le portail. Résolu en centralisant le state sur un chemin absolu partagé (backend local avec path fixe), plutôt que de synchroniser manuellement des fichiers entre dossiers.
  • terraform apply non ciblé : une erreur de script a un temps appliqué l'intégralité des changements en attente sur tout le parc au lieu de la seule VM concernée, menaçant de supprimer le disque de démarrage d'un serveur actif. Corrigé en systématisant l'option -target sur chaque opération automatisée.

Templates Windows et Cloudbase-Init

  • Limite de rearm Windows : le nombre de sysprep /generalize est limité (3 par défaut). Plusieurs itérations de configuration ont épuisé cette limite, nécessitant de repartir d'une installation neuve et de regrouper tous les réglages avant un unique sysprep final.
  • Compte utilisateur introuvable : le plugin de mot de passe Cloudbase-Init cible par défaut un compte nommé Admin, inexistant une fois ce nom retiré de la configuration — contourné par un script local lisant directement le mot de passe dans les métadonnées et l'appliquant au compte administrateur intégré (SID -500), indépendamment de la langue du système.
  • Mot de passe exigé au premier login : comportement lié au flag Windows natif de changement forcé, non résolu par le seul paramètre first_logon_behaviour de Cloudbase-Init — nécessité d'un script dédié pour lever ce flag après l'injection du mot de passe.
  • Disque fantôme à chaque redimensionnement : le contrôleur IDE ne supporte pas le redimensionnement de disque à chaud (contrairement à SCSI/VirtIO), provoquant l'ajout d'un second disque au lieu d'agrandir le premier — contourné en figeant la taille de disque pour les VM Windows.

Ansible et Semaphore

  • Permissions de services système : plusieurs installations (Semaphore, TeamPass) ont nécessité la création manuelle d'utilisateurs/groupes système absents des paquets installés.
  • Variables non transmises : les scripts Bash lancés par Semaphore reçoivent les variables de Survey comme arguments positionnels (NOM=valeur), pas comme variables d'environnement — nécessité d'une boucle d'export explicite en tête de chaque script.
  • Désynchronisation de Repository : plusieurs templates ont pointé vers un commit Git figé au lieu de la branche master, provoquant l'exécution de versions obsolètes de scripts pourtant corrigés.

Dépôts et paquets

  • Dépôts tiers sans version stable pour Debian 13 : HashiCorp et Proxmox Backup Server ne proposaient pas encore de dépôt trixie au moment du projet — contourné en forçant le dépôt bookworm (compatible).
  • Clé GPG expirée : un dépôt tiers déjà configuré a cessé de se valider après un changement de clé côté éditeur, bloquant les mises à jour système passant par Ansible.

Stockage réseau (sauvegardes)

  • Limitation NFS/CIFS pour les chunk stores PBS : Proxmox Backup Server nécessite des opérations système (attributs étendus, mise à jour d'atime) non supportées de façon fiable par un montage réseau direct dans la VM invitée — résolu en faisant porter le NAS au niveau de l'hyperviseur Proxmox (stockage NFS natif), puis en attachant un disque virtuel classique à la VM PBS, formaté localement en ext4.

Supervision

  • Persistance de VM supprimées dans Grafana : Prometheus conserve l'historique des séries même après retrait d'une cible du fichier de découverte — ajout d'une purge explicite (delete_series + clean_tombstones) au moment de la suppression d'une VM.
  • Promtail déprécié : l'agent initialement envisagé pour Loki arrivant en fin de vie, le projet a basculé sur son successeur officiel, Grafana Alloy.