← Retourner à la liste des articles
Image blog
Auteur

Par Maxime Jumelle

CTO & Co-Founder

Publié le 6 nov. 2023

Catégorie Cloud / DevOps

Packer : créer ses propres Golden Images

Depuis longtemps, les machines virtuelles sont utilisées très régulièrement par les équipes SI, que ce soit pour une utilisation On-Premise (réseau interne à l'entreprise) ou dans un environnement Cloud. Cela permet notamment à ces équipes de construire leurs propres images machine, en y installant des applications nécessaires, ou en y configurant des couches de sécurité spécifiques.

Mais créer des images système demande toute une organisation qui peut être parfois difficile à développer et maintenir sans un outil adapté. C'est ainsi que des solutions comme Packer permettent de créer des images de machines virtuelles propres, qui servent notamment de base pour d'autres images machines.

Dans cet article, nous allons voir ce qu'est une Golden Image, et en quoi Packer se révèle être un outil particulièrement efficace pour en créer.

Définition d'une Golden Image

Une Golden Image (ou image maître en français, même si cette expression est rarement utilisée) est une image système parfaitement configurée, préparée et prête à l'emploi d'un serveur, généralement avec un système d'exploitation et un ensemble spécifique de logiciels et de configurations. Cette image est considérée comme une référence ou un modèle de base pour le déploiement ultérieur de machines virtuelles, d'ordinateurs physiques ou de serveurs.

Il y a de nombreux avantages à utiliser des Golden Image.

  • En utilisant une Golden Image, nous pouvons déployer rapidement et facilement de nouvelles machines virtuelles avec la même configuration de base. Cela garantit la cohérence des configurations et réduit les erreurs humaines potentielles lors de la création de nouveaux systèmes.
  • De plus, elles peuvent être configurées pour répondre aux exigences de sécurité et de conformité spécifiques à son entreprise. Cela garantit que toutes les machines déployées à partir de ces images respectent les normes de sécurité et de conformité.
  • Enfin, lorsque l'on a besoin d'ajouter de nouvelles ressources à notre infrastructure, il suffit de dupliquer la Golden Image et créer de nouvelles machines à partir de celle-ci.

Tout ceci offre une gestion centralisée où l'on peut gérer toutes ses Golden Images, et permet également de réduire les coûts opérationnels grâce à l'optimisation apportée sur les Golden Images.


À découvrir : notre formation DevOps Engineer


Une Golden Image peut être vue comme une image système « propre » : cela permet d'avoir un système de base que l'on considère comme prêt pour la production. Par exemple, si une entreprise A souhaite utiliser un serveur d'authentification Active Directory pour tous ses composants logiciels, alors elle devra installer les dépendances nécessaires sur chaque machine. Avec un Golden Image qui contient déjà les dépendances d'Active Directory (AD), plus besoin de le refaire systématique, ce qui permet de faire gagner du temps tout en harmonisant les images utilisées.

Pour créer une Golden Image, il y a plusieurs possibilités.

  • Si les machines virtuelles sont déployées dans un Cloud public (AWS, GCP, Azure...), ces derniers disposent de services permettant de créer des Golden Images directement dessus.
  • Si les machines virtuelles sont déployées dans un hyperviseur type VirtualBox ou VMWare, des outils comme HashiCorp Packer permettent d'abstraire les configurations des Golden Image indépendamment de l'hyperviseur cible.

Et c'est justement ce dernier outil qui va nous intéresser, car il permet de construire des Golden Image pour de nombreux Clouds publics ou hyperviseurs.

Packer

Packer est un outil open-source développé par HashiCorp, conçu pour automatiser la création d'images de machine virtuelle ou d'infrastructure dans divers environnements (Cloud, virtualisation et conteneurs). Packer permet de définir et de configurer des images de manière reproductible, de sorte qu'elles puissent être facilement déployées dans différents environnements Cloud ou sur des plateformes de virtualisation.

Les principales forces de Packer résident dans sa simplicité tout en offrant une reproductibilité élevée.

  • Il utilise le JSON ou HCL (HashiCorp Configuration Language que l'on retrouve également avec Terraform) pour définir les configurations, en utilisant une syntaxe claire et lisible.
  • Les images sont créées de manière cohérente à chaque exécution, ce qui évite les variations indésirables entre les images.
  • Packer prend en charge plusieurs environnements, y compris des fournisseurs de cloud tels qu'Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), des solutions de virtualisation comme VMware, et des technologies de conteneurisation comme Docker.

Pour installer Packer, on se dirige vers la page de téléchargement sur le site officiel.

Une fois Packer installé, la commande packer devrait être accessible pour vérifier que l'outil a bien été installé.

Création d'images

Afin de pouvoir définir une box avec Packer, nous devons créer un fichier de configuration écrit en JSON ou en HCL. Nous utiliserons le HCL dans ce Notebook, bien qu'il y ait exactement les mêmes paramètres dans les deux formats de configuration.

Ce qui est important de comprendre, c'est comment Packer va builder la Golden Image. L'idée consiste à utiliser une machine virtuelle temporaire où les configurations seront effectuées dessus, pour ensuite exporter cette VM en tant que box (pour être ensuite utilisée avec Vagrant par exemple) avant de la supprimer.

Pour cela, nous devons définir toute une terminologie associée à la création de ces images.

  • Tout d'abord, nous avons initialement des Builds : il s'agit de tâches individuelles qui vont produire une seule image, en général pour une seule plateforme cible. Par exemple, un Build pourra construire une image de type Debian avec des dépendances préalablement installées, en vue d'être utilisée sur AWS.
  • À l'intérieur de ces Builds, nous retrouvons des Builders : ce sont eux qui vont véritablement créer une image machine pour une seule plateforme. Parmi les builders les plus fréquemment utilisés, nous retrouvons VirtualBox, VMware ou Amazon EC2.
  • Les Provisioners vont installer et configurer des dépendances logicielles à l'intérieur d'une machine virtuelle avant qu'elle soit transformée en une image statique. Ce sont notamment ces composants qui permettent de configurer entièrement une image afin qu'elle soit adaptée à notre cas d'usage.
  • Les Post-Processors sont des composants qui utilisent le résultat d'un builder ou d'un autre post-processor pour créer un nouvel artifact. Par exemple, pour compresser une image ou calculer un checksum d'une image, un post-processor peut être utilisé.

À lire : découvrez notre formation DevOps Engineer


À titre d'exemple, pour construire une Golden Image EC2 qui pourra être utilisée par la suite sur AWS, nous utiliserons une image source EC2, avec ensuite un builder EC2.

Avantages de Packer

Packer dispose de plusieurs avantages, rendant son utilisation très pratique pour les équipes SI.

Tout d'abord, Packer permet d'automatiser le processus de création d'images machine, ce qui permet de définir de manière codée l'ensemble de configurations, de logiciels et de paramètres. Cela garantit que les images sont toujours créées de manière cohérente, ce qui évite les erreurs humaines.

Autre point important avec cette catégorie d'outils, c'est que de nombreuses plateformes de virtualisation et de Cloud telles que AWS, Azure, Google Cloud, VMware, VirtualBox et Docker sont prises en charge par Packer. Ainsi, nous pouvons créer des images qui fonctionnent dans divers environnements sans réécrire les scripts.

Également, Packer facilite la mise en place de déploiements multi-Cloud ou la gestion de plusieurs environnements de développement, de test et de production en reproduisant facilement des images machine dans divers environnements ou régions du Cloud.

À tout cela s'ajoute la forte intégration avec d'autres outils, l'efficacité inhérente à l'automatisation ou encore la sécurité renforcée grâce à la mise en place de contrôles au moment de la création des images.

Conclusion

Packer est devenu un outil indispensable pour les développeurs et les administrateurs système qui recherchent des méthodes efficaces pour automatiser et optimiser la création d'images machine. Il répond aux besoins de déploiement d'infrastructures modernes, qu'il s'agisse de solutions cloud, de conteneurs ou de virtualisation, grâce à sa polyvalence, sa simplicité d'utilisation et sa capacité à fonctionner sur de nombreuses plateformes.

Les avantages de l'adoption de Packer comprennent une réduction des erreurs humaines, la reproductibilité des images, la rapidité de déploiement et une sécurité améliorée. Enfin, en inscrivant l'infrastructure en tant que code, Packer s'intègre harmonieusement dans les pipelines d'intégration continue et de livraison continue (CI/CD), contribuant ainsi à une approche DevOps plus efficace.

Pour en savoir plus sur l'utilisation d'outils comme Packer, nous proposons une formation complète sur le métier de DevOps qui permet de maîtriser l'ensemble des compétences essentielles pour un ingénieur DevOps, y compris les techniques de virtualisation.

Vous souhaitez vous former au Cloud / DevOps ?

Articles similaires

Blog

28 févr. 2024

Cloud / DevOps

Pour de nombreuses entreprises, innover chaque jour en proposant des applications à ses utilisateurs est un sujet primordial. Pour autant, cette course au déploiement continu de nouvelles applications nécessite des compétences bien particulières sur les architectures Cloud, l'automatisation de projets et la supervision. C'est à partir de ce moment qu'intervient le rôle de l'ingénieur DevOps dans les entreprises.

Maxime Jumelle

Maxime Jumelle

CTO & Co-Founder

Lire l'article

Blog

23 févr. 2024

Cloud / DevOps

Dans le monde du DevOps, les conteneurs sont rapidement devenus des incontournables, aussi important que les machines virtuelles. Des plateformes de conteneurisation comme Docker ont permis de simplifier et d'accélérer la création d'image et l'exécution de conteneurs sur différents systèmes, à portée de tous.

Maxime Jumelle

Maxime Jumelle

CTO & Co-Founder

Lire l'article

Blog

16 févr. 2024

Cloud / DevOps

Dans l'approche GitOps, il existe de nombreux outils permettant d'exécuter des pipelines CI/CD : certains se concentrent uniquement sur la partie intégration continue, d'autres avec le déploiement en plus. S'il y en a un qui est considéré comme l'un des plus matures et des plus robustes, c'est bien GitLab.

Maxime Jumelle

Maxime Jumelle

CTO & Co-Founder

Lire l'article