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 avec packer 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.