2.9 KiB
terraform-proxmox-serveur-ubuntu-24-04
Crée sur le nœud Proxmox pve une VM Ubuntu Server 24.04 LTS réduite au strict
nécessaire, durcie par cloud-init, et prête à être reprise par Ansible.
Jumeau du dépôt terraform-proxmox-serveur-debian-12 : même structure, mêmes
conventions, même CI/CD. Seules la distribution et les quelques points où elle diffère
de Debian ont changé.
Ce que le code met en place
| Point | Choix retenu |
|---|---|
| Système | Ubuntu Server 24.04 LTS cloudimg (image officielle Canonical) |
| Comptes | comptes unix sans mot de passe, sudo NOPASSWD absent, clé publique uniquement |
| root | joignable en SSH par clé seulement, mot de passe réservé à su - et à la console |
| sudo | neutralisé par dpkg-statoverride (voir COMPTES.md) |
| Services exposés | 22/tcp et ICMP uniquement, et seulement depuis ssh_allowed_cidrs |
| Pare-feu | nftables, politique drop en entrée et en transit, avec /etc/nftables.d/ pour les ajouts d'Ansible |
| Mises à jour | unattended-upgrades activé |
| Agent | qemu-guest-agent |
Le compte ubuntu livré par l'image n'est jamais créé, et son fichier sudoers est
retiré.
Une VM par fichier
Un fichier vms/<nom>.tfvars et un espace de travail Terraform par machine, chacune
avec son propre état. Tout est décrit dans VMS.md.
Attention aux collisions avec le dépôt Debian, qui gère déjà la VM 120 en 10.0.5.20 :
vm_id, vm_hostname et vm_ipv4_address doivent être uniques sur l'infrastructure,
et rien ne le vérifie automatiquement.
Prérequis
Identiques à ceux du dépôt Debian, et déjà en place sur votre nœud :
- jeton d'API Proxmox avec
VM.*,Datastore.*,Sys.AuditetSDN.Use; - accès SSH au nœud, le dépôt du snippet cloud-init ne passant pas par l'API ;
- contenu
snippetsetimportactivés sur le stockagelocal; - adresse IP exclue de la plage DHCP d'OPNsense.
La CI et les secrets sont décrits dans CICD.md.
Après l'apply
terraform apply produit la VM démarrée, qui exécute cloud-init pendant 3 à 6
minutes, et generated/<nom>-inventory.yml pour Ansible.
ssh [email protected] "cloud-init status --wait; command -v sudo || echo 'sudo absent'; sudo -n true 2>&1 | head -1"
sudo existe toujours en tant que fichier, mais son exécution est refusée à tout le
monde. C'est la seconde commande qui le vérifie.
Points d'attention
- cloud-init ne rejoue rien. Modifier le template après création ne change pas une
VM existante. Pour repartir propre :
destroypuisapply. - Extension de l'image. Canonical publie son image cloud en
.imgalors qu'il s'agit d'un qcow2. Le contenuimportde Proxmox n'accepte pas cette extension : le fichier est donc renommé en.qcow2au téléchargement, sans conversion. - Clés d'hôte. Chaque recréation en change : prévoir
ssh-keygen -R <ip>.