Cet outil permet de créer des images machines à partir d’une image de base et d’un fichier de configuration.
Packer étant un produit Hashicorp, il utilise le même langage HCL que Terraform.
Packer va
- construire une Machine Virtuelle a partir de l’image de base,
- récupérer les artefacts nécessaires à son travail,
- reconfigurer l’image en fonction des règles,
- construire la nouvelle image, et
- détruire la Machine Virtuelle.
Le builder sera la plateforme pour laquelle on va créer notre image (i.e. l’opérateur Cloud).
Les provisioners vont exécuter la configuration.
Packer supporte également des post-processeurs pour finaliser la configuration de l’image.
packer.io → décompresser l’archive et déplacer l’exécutable (packer
) dans le $PATH
.
Il est également possible de l’installer à partir du gestionnaire de paquet de sa distribution
(lorsqu’il propose une version de Packer).
Structure du projet packer :
- Le template principal, avec les blocs pour déclarer
- les providers (bloc
packer
; on applique la configuration avecpacker init
), - les variables (comme pour Terraform ; il est possible d’utiliser des variables
d’environnement avec
env()
), - les sources (porte la configuration en fonction du provider) et
- les instructions de build (contient les paramètres et les provisioners)
Le site de Packer donne la liste de tout les providers.
Packer permet
- soit de construire à partir de l’image de départ : on étend l’image avec notre configuration;
- soit utiliser cette image comme hôte : la Machine Virtuelle créée à partir de l’image servira d’hôte à l’intérieur duquel on va créer notre image via un volume monté à notre Machine Virtuelle éphémère.
Packer propose d’activer ou désactiver les logs.
Pour construire : packer build
.