1 minute(s) de lecture


Ansible Proxmox Infrastructure as Code

Cahier des charges

Déployer des VMs et des conteneurs manuellement, de manière identique, est lent et source d’erreurs. L’objectif était d’industrialiser ce provisionnement, de façon reproductible et idempotente.

Solutions choisies

J’ai choisi Ansible, un outil d’infrastructure as code déclaratif et sans agent. Le control node pilote les cibles Linux en SSH, les cibles Windows en WinRM, et Proxmox directement via son API REST. Les playbooks suivent la structure recommandée par Ansible, avec des dossiers dédiés à l’inventaire, aux playbooks et aux rôles. Les secrets sont chiffrés avec Ansible Vault.

Mise en œuvre

Environnement technique :
Ansible - Proxmox - Cloud-Init - Ansible Vault

1. Installation d'Ansible sur le control node
2. Structuration du projet selon les bonnes pratiques Ansible (inventaire, playbooks, rôles)
3. Chiffrement des secrets avec Ansible Vault
4. Configuration du provisionnement des VMs via Cloud-Init au premier démarrage
5. Configuration du provisionnement des conteneurs LXC, avec une phase de post-installation en SSH pour compléter les limites de l'injection native Proxmox
6. Enregistrement automatique des nouvelles machines dans l'inventaire opérationnel
7. Validation de la connectivité de l'ensemble des cibles, via les modules ping et win_ping

Tests et imprévus

Le premier déploiement sur un cluster vide a confirmé l’état “changed” attendu. J’ai vérifié l’idempotence en relançant le même playbook sur un cluster partiellement déployé. Résultats : les conteneurs déjà conformes sont restés en état “ok”, et seuls les nouveaux sont passés en “changed”. La connectivité de l’ensemble des machines gérées a été validée. Cependant, WinRM peut se montrer capricieux, et pour éviter tout problème de connectivité, j’aurais dû l’intégrer à mon template Cloud-Init Windows.

Bilan

Le playbook garantit un déploiement reproductible, avec une idempotence vérifiée en conditions réelles. Le pilotage reste aujourd’hui exclusivement en ligne de commande, ce qui limite la délégation à des profils moins techniques. Intégrer Semaphore UI apporterait un tableau de bord centralisé pour le lancement de playbooks, la gestion des inventaires et la planification.