Formation Packer : du template de base à l'automatisation complète
Formation Packer : concepts, templates HCL2, variables, provisioners et post-processors pour créer des images reproductibles sur Docker, AWS, Azure et GCP.
L’issue s’ouvre déjà remplie avec le titre et l’adresse de cette page.
Packer est l'outil HashiCorp de référence pour créer des images machine
identiques sur de multiples plateformes (Docker, AWS, Azure, GCP, Proxmox,
etc.). Cette formation vous accompagne du premier template jusqu'à
l'automatisation complète de vos workflows de création d'images, avec un
fil conducteur : chaque notion est rejouée sur le builder Docker, sans
compte cloud ni coût.
Elle s'adresse aux développeurs, aux DevOps, aux SRE et aux équipes
plateforme. Pour la suivre, il suffit de savoir utiliser un terminal
Linux et de connaître les bases de Docker, que tous les exemples
emploient comme builder. Contrairement à une documentation classique, la
formation suit une progression pédagogique : chaque module s'appuie sur
les précédents, avec des exemples pratiques testables immédiatement.
Le tableau ci-dessous reprend les modules du parcours, avec les intitulés
et les durées que le plan de formation affiche dans la colonne de gauche.
Chaque ligne indique la capacité concrète acquise à la fin du module.
Suivez-les dans l'ordre si vous débutez : le second suppose qu'un premier
build Docker a réussi, et le troisième réutilise le template paramétré du
second.
Module
Leçons
Durée
Ce que vous saurez faire
Découvrir Packer et réussir un premier build
2
1 h 05
« Je sais pourquoi Packer existe, il est installé et j'ai construit une première image Docker »
Écrire un template HCL2 paramétrable
2
1 h
« J'écris un template HCL2 propre et je le paramètre avec variables, locals et fonctions »
Configurer l'image et industrialiser la chaîne de build
3
2 h
« Je configure mes images avec shell, file ou Ansible, j'enchaîne des post-processors et mes templates passent en CI/CD »
Le premier module pose les fondations et se termine par une image qui
existe réellement. La leçon
Concepts et architecture
(25 min) explique pourquoi Packer existe, ce qu'est une « golden image »,
comment s'enchaînent builders, provisioners et post-processors dans un
build, et quand utiliser Packer plutôt qu'un Dockerfile ou un outil de gestion de configuration comme Ansible.
La leçon Installation
(40 min) installe le binaire sur Linux, macOS ou Windows, vérifie la version,
puis construit une première image Docker de bout en bout pour valider la
chaîne.
Thème
Contenu
Problématique
Dérive de configuration, images non reproductibles
Golden images
Définition, avantages, immutable infrastructure
Workflow
Ce qui se passe pendant un build, étape par étape
Builders
Docker, AWS, Azure, GCP, Proxmox, QEMU
Comparaison
Packer vs Ansible, Chef et Dockerfile
Glissez pour voir
Pour l'installation, la leçon recommande mise quand on développe, parce
qu'il gère plusieurs versions côte à côte et se fixe par projet dans un
.mise.toml ; le dépôt APT officiel de HashiCorp convient aux serveurs de
CI, et Homebrew reste la voie naturelle sur macOS. Avec mise, l'installation
tient en une commande :
Le cœur de Packer : les templates HCL2. La leçon
Templates HCL2
(25 min) détaille la structure d'un fichier .pkr.hcl, les blocs packer,
source et build, le découpage en plusieurs fichiers et les commandes fmt,
validate et inspect qui rattrapent les erreurs avant le build. La leçon
Variables et fonctions
(35 min) rend ensuite le template flexible : variables d'entrée, locals,
fichiers .pkrvars.hcl, data sources et fonctions built-in, pour ne plus
recopier un template par environnement.
Bloc
Rôle
packer {}
Configuration Packer, plugins requis
source
Définition du builder (Docker, AWS, etc.)
build
Orchestration des sources, provisioners, post-processors
Glissez pour voir
Le template minimal ci-dessous est celui du premier build : une source
Docker figée par son digest, et un bloc build qui ne fait que la
référencer. Tout le reste de la formation ajoute des blocs à ce squelette.
Le dernier module installe le système dans l'image, transforme l'artefact
produit, puis met la chaîne en production. La leçon
Provisioners
(40 min) configure l'image après sa création avec les provisioners shell,
file, shell-local et Ansible. La leçon
Post-processors
(35 min) agit après le build : compression, manifest pour la traçabilité,
checksum pour l'intégrité, et push vers un registre Docker. La leçon
Bonnes pratiques
(45 min) industrialise vos templates : structure de projet, Makefile,
techniques de debug, gestion des secrets et intégration CI/CD.
Les questions les plus posées sur Packer : différence avec Dockerfile ou
Terraform, licence, installation, provisioners et intégration CI/CD.
Packer est un outil open source développé par HashiCorp qui crée des images machine identiques pour plusieurs plateformes à partir d'une configuration unique.
# Limiter à 2 builds simultanés
packer build -parallel-builds=2 .
# Un seul build à la fois
packer build -parallel-builds=1 .
Avantages
Gain de temps : Docker et AWS se buildent simultanément
Même configuration : provisioners partagés
Artefacts séparés : chaque builder produit son image
Packer et Terraform sont deux outils HashiCorp complémentaires, pas concurrents.
Critère
Packer
Terraform
Rôle
Construire des images machine
Provisionner l'infrastructure
Produit
AMI, image Docker, QCOW2, VMDK
VM, réseau, stockage, DNS
Moment
Avant le déploiement (build)
Au déploiement (apply)
Langage
HCL2
HCL2
Workflow combiné
Packer crée une image durcie et pré-configurée (golden image).
Terraform déploie des instances à partir de cette image.
Cette séparation applique le principe d'immutable infrastructure : on ne modifie pas un serveur en place, on redéploie une nouvelle image versionnée.
Oui. Packer est gratuit et son code est ouvert.
Licence
Depuis août 2023, Packer est distribué sous BUSL-1.1 (Business Source License), en remplacement de la licence MPL-2.0 historique. En pratique :
L'usage reste libre et sans coût pour construire vos images, y compris en entreprise et en CI/CD.
La seule restriction vise à concurrencer commercialement les produits HashiCorp, ce qui ne concerne pas les équipes qui utilisent Packer pour leurs propres besoins.
Pour un usage interne, Packer reste donc utilisable sans frais.
Les deux sont signés HashiCorp mais répondent à des besoins différents.
Aspect
Packer
Vagrant
Objectif
Construire des images machine
Orchestrer des VMs de dev
Cible
Production, cloud, multi-plateforme
Poste de développement local
Produit
AMI, image Docker, QCOW2, box
VM lancée depuis une box
Cycle de vie
Build ponctuel d'un artefact
up, ssh, halt, destroy
Comment ils s'articulent
Packer peut générer les box que Vagrant consomme, grâce à son post-processor vagrant :
En pratique : Packer standardise l'image de base une fois pour toutes, Vagrant l'instancie en local pour que chaque développeur travaille dans le même environnement.
Gardez ces adresses sous la main pendant la formation. La documentation
officielle et la référence HCL2 répondent à la plupart des questions de
syntaxe, la page des builders liste les plugins disponibles pour chaque
plateforme, et la FAQ HashiCorp traite les cas de dépannage et les
comparaisons avec d'autres outils.