Configuration Proxmox pour Terraform & Packer
Cette page documente la mise en place du RBAC (Role-Based Access Control) pour l'automatisation.
🛠️ Configuration des accès (CLI)
Exécutez ces commandes sur votre nœud Proxmox pour préparer les accès.
Création des rôles
Nous séparons les rôles pour limiter les privilèges au strict nécessaire.
# Rôle pour Terraform
pveum role add TerraformProv -privs "Datastore.Allocate Datastore.AllocateSpace Datastore.Audit Pool.Allocate Sys.Audit Sys.Console Sys.Modify VM.Allocate VM.Audit VM.Clone VM.Config.CDROM VM.Config.Cloudinit VM.Config.CPU VM.Config.Disk VM.Config.HWType VM.Config.Memory VM.Config.Network VM.Config.Options VM.Console VM.Migrate VM.PowerMgmt SDN.Use Pool.Audit VM.GuestAgent.Audit"
# Rôle pour Packer
pveum role add Packer -privs "Datastore.Allocate Datastore.AllocateSpace Datastore.Audit Pool.Allocate Sys.Audit Sys.Console Sys.Modify VM.Allocate VM.Audit VM.Clone VM.Config.CDROM VM.Config.Cloudinit VM.Config.CPU VM.Config.Disk VM.Config.HWType VM.Config.Memory VM.Config.Network VM.Config.Options VM.Console VM.Migrate VM.Monitor VM.PowerMgmt SDN.Use"
Création des utilisateurs et ACL
# Utilisateurs
pveum user add packer@pve --password <votre_password>
pveum user add terraform-prov@pve --password <votre_password>
# Attribution des permissions sur la racine (/)
pveum aclmod / -user terraform-prov@pve -role TerraformProv
pveum aclmod / -user packer@pve -role Packer
🔑 Tokens API générés
Voici les identifiants à reporter dans vos fichiers de variables secrets.
!!! success "Tokens actifs"
- Packer ID : packer@pve!packer
- Terraform ID : terraform-prov@pve!terraform
🏗️ Structure du projet Terraform
À la racine de votre dossier Terraform, vous devez organiser vos fichiers comme suit pour utiliser ces accès :
provider.tf
Ce fichier définit comment Terraform communique avec Proxmox.
terraform {
required_providers {
proxmox = {
source = "telmate/proxmox"
version = "2.9.14"
}
}
}
provider "proxmox" {
pm_api_url = "https://<IP_PROXMOX>:8006/api2/json"
pm_api_token_id = var.proxmox_token_id
pm_api_token_secret = var.proxmox_token_secret
pm_tls_insecure = true
}
terraform.tfvars (À NE PAS COMMITTER)
C'est ici que l'on place les valeurs sensibles.
proxmox_token_id = "terraform-prov@pve!terraform"
proxmox_token_secret = "8cf326f7-97a4-4b99-b49b-2bab246f628a"
📋 Checklist Templates (22-01-2026)
Avant de convertir une VM en template, assurez-vous de :
- Installer l'agent :
apt install qemu-guest-agent -y - Activer l'agent dans les options de la VM Proxmox.
- "Cleaner" la VM (suppression des clés SSH hôtes, logs, etc.).
- Faire un clic droit -> Convert to template.