Packer¶
Installer un système d'exploitation à la main, cliquer dans le même assistant pour la centième fois, et espérer que ce soit bien identique à la dernière : voilà ce que Packer fait disparaître. Signé HashiCorp, il construit des images machine à partir d'un fichier de configuration — VM, template Proxmox, AMI cloud… Vous décrivez une fois l'image voulue, Packer la fabrique de façon identique, reproductible et automatisable à l'infini. C'est le point de départ d'une infrastructure propre : des modèles versionnés plutôt que des installations artisanales.
Installation¶
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install packer
Installation des plugins¶
packer plugins install github.com/hashicorp/proxmox
Commandes de Base¶
Convertir un fichier JSON en format Packer HCL¶
packer hcl2_upgrade -with-annotations <file>.json
Initialiser un fichier Packer¶
packer init <file>.pkr.hcl
Lancer la construction du template¶
packer build <file>.pkr.hcl
Lancer la construction du template avec des variables¶
packer build -var-file=<file>.pkr.vars.hcl <file>.pkr.hcl
Lancer Packer avec une verbosité plus importante sur les logs¶
PACKER_LOG=1 packer build -var-file=<file>.pkr.vars.hcl <file>.pkr.hcl
Ajouter des variables à partir de la ligne de commande¶
packer build -var 'var_name=value' -var 'another_var_name=value' <file>.pkr.hcl
Déboguer avec des logs détaillés¶
PACKER_LOG=1 PACKER_LOG_PATH="packer.log" packer build -var-file=<file>.pkr.vars.hcl <file>.pkr.hcl
packer.log pour une analyse plus facile.
Vérifier la syntaxe HCL¶
packer hcl2_upgrade -check-syntax <file>.json
Gestion des Droits Utilisateur sur Proxmox¶
Définir les droits sur le rôle de l'utilisateur limité à la gestion des templates¶
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"
Ajouter un utilisateur¶
pveum user add <USER>@pve --password <PASSWORD>
Attribution du path¶
pveum aclmod / -user <USER>@pve -role Packer
Génération du token¶
pveum user token add <USER>@pve packer -expire 0 -privsep 0 -comment "Packer token"