Skip to content

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 :

  1. Installer l'agent : apt install qemu-guest-agent -y
  2. Activer l'agent dans les options de la VM Proxmox.
  3. "Cleaner" la VM (suppression des clés SSH hôtes, logs, etc.).
  4. Faire un clic droit -> Convert to template.