Créer et construire un modèle et des images Packer pour AWS / Blogs / Perficient

Comme vous le savez peut-être déjà, il existe plusieurs AMI que vous pouvez utiliser dans l’environnement Amazon EC2. Cependant, vous pouvez constater qu’il manque certains logiciels de configuration spécifiques dont vous avez besoin. Si, comme moi, vous préférez utiliser des logiciels tiers comme Docker ou Ansible pour implémenter des modifications de configuration et disposer de modèles de système d’exploitation prédéfinis avec vos besoins logiciels pour que les choses restent productives, vous voudrez probablement envisager de créer votre propre AMI. .
En langage Packer, le fichier de configuration utilisé pour décrire quelle image nous voulons créer et comment est appelé modèle. Le format d’un modèle est JSON de base. Dans cet article, je vais décrire comment y parvenir selon le diagramme ci-dessous.

Fig : Diagramme d’architecture Packer pour AWS
Qu’est-ce que Packer ?
Packer est l’outil open source de HashiCorp permettant de créer des images machine à partir de la configuration source. Vous pouvez configurer les images Packer avec un système d’exploitation et un logiciel pour votre cas d’utilisation spécifique.
La configuration Terraform pour une instance de calcul peut utiliser une image Packer pour provisionner votre instance sans configuration manuelle.
Objectifs
- Conditions préalables
- Installer l’emballeur
- Sélectionnez l’image machine Amazon dans la console AWS
- Présentation de l’emballeur
- Créez un fichier JSON à utiliser avec Packer.
- Exécutez Packer pour créer notre AMI
- Conclusion
Conditions préalables
Pour utiliser Packer avec Amazon, vous devez d’abord obtenir votre clé d’accès AWS et votre clé secrète AWS. Cela peut être créé dans la section IAM du compte Amazon. Veuillez vous référer à la capture d’écran et au lien ci-dessous pour connaître les informations requises. Autorisation maintenant https://www.packer.io/plugins/builders/amazon
Note: Comme mentionné dans le lien d’autorisation IAM ci-dessus, l’autorisation existante doit être requise.
Installer l’emballeur
Installez le packer en suivant les instructions mentionnées ci-dessous,
- Télécharger le packer https://www.packer.io/downloads.html
- Décompressez le fichier téléchargé et extrayez-le dans n’importe quel dossier.
- J’ai installé le packer dans C:\packer.
- Ajoutons ce chemin à la variable $PATH
- Pour valider si cela fonctionne, tapez : packer -version
- Version pour utiliser Packer 1.8.0
Pour en savoir plus sur Packer, veuillez vous référer à ce document : https://learn.hashicorp.com/packer
Sélectionnez l’image machine Amazon dans la console AWS
Avant de créer le fichier modèle Packer, nous devons nous préparer avec le nom de l’AMI. Les images AMI qui fonctionnent sur la région US-East-1 peuvent ne pas fonctionner avec la région US-West-1.
Assurez-vous de trouver l’AMI sur Amazon Marketplace et cliquez sur Accepter les conditions du logiciel. Sinon, vous ne pourrez pas utiliser l’AMI et Packer se fermera avec une erreur. Nous devons donc valider l’AMI avant d’exécuter le modèle Packer.
Pour sélectionner l’image de base, vous devez accéder à la console AWS ou avoir accès à l’AWS CLI. Connectez-vous à l’interface AWS et, à gauche, sélectionnez AMI.
Pour les besoins de cet article, j’ai en fait sélectionné une AMI Ubuntu.
Présentation de l’emballeur
Dans cette section, nous fournirons un aperçu de Packer, comme la façon dont les différentes sections sont utilisées dans Packer et comment nous les avons utilisées dans le script.
Nous divisons l’emballeur en quatre sections « constructeurs« , « approvisionneurs« , « post-processeurs » et « variables« . Nous procéderons étape par étape et, à la fin, exécuterons le script final.
Constructeurs – Construire votre première AMI
Les constructeurs sont des composants Packer qui peuvent générer une image machine pour une seule plate-forme. Les constructeurs lisent certaines configurations et les utilisent pour exécuter et créer des images de machine. Un générateur est appelé dans le cadre de la construction pour générer les images résultantes réelles. Pour plus de détails sur les constructeurs, Cliquez ici.
Dans la capture d’écran ci-dessous, nous spécifions les informations d’identification d’accès à l’environnement AWS ainsi que divers paramètres de notre environnement AWS tels que la région, l’AMI source et le type d’instance, ssh_username.
Nous avons enregistré le fichier ci-dessous avec le nom packer.json (utilisé uniquement pour la section constructeurs)
Exécutez la commande packer – packer build packer.json
Une fois que c’est fait, vous retrouverez l’image dans la section AMI avec le nom my-test-ami, mais c’est une AMI inutile. Nous venons de créer l’AMI à partir de l’instance ec2.
Fournisseurs – Configuration des provisionneurs
Les provisionneurs utilisent des logiciels intégrés et tiers pour installer et configurer l’image de la machine après le démarrage. Les approvisionneurs préparent le système à l’utilisation. Les cas d’utilisation courants pour les approvisionneurs incluent donc l’installation de packages, l’application de correctifs au noyau, la création d’utilisateurs et le téléchargement de code d’application. Pour plus de détails, Cliquez ici
Maintenant que nous avons le script de provisionnement, nous devons écrire un simple script bash pour installer le logiciel approprié dans notre nouvelle AMI générée par Packer. Pour les besoins de cet article, nous allons créer notre script et lui dire d’installer Nginx. Nous le placerons ensuite dans la section provisionneur.
Dans la section builder, lorsque nous exécutons la commande packer—packer build packer.json, cela crée une AMI inutile, mais lorsque nous utilisons le approvisionneurs dans le fichier packer.json (utilisé uniquement pour la section provisioners), il crée une AMI avec Nginx logiciel.
Note: Lors de la dernière étape, nous stockerons les commandes de la section provisioners dans packages.sh.
Post-processeurs
Le post-processeur du manifeste peut stocker la liste de tous les artefacts au format JSON, qui est produite par le packer lors de la construction. Pour plus de détails, s’il vous plaît Cliquez ici.
Créer un fichier JSON à utiliser avec Packer
Dans cette section, nous utilisons trois fichiers différents pour Packer : Packer.json (Constructeurs), packages.json (approvisionneurs) et manifestes.json
Variables
Dans la section des variables, nous avons créé des variables telles que ami_target_name, source_ami, ami_source_owner, ssh_username, aws_access_key et aws_secret_key qui sont requises pour la création d’Ami personnalisé et transmis ces noms de variables dans la section constructeur. veuillez vous référer ci-dessous pour plus de détails.
« ami_name » – Il est utilisé pour fournir le nom après la création de l’AMI personnalisée.
« ami_source_owner » – Il est utilisé pour capturer des images sources à partir d’un compte AWS, par exemple. Nom de l’AMI AWS.
« ssh_username » – fournissez le nom d’utilisateur selon la norme AWS comme pour Redhat – ec2-user, pour Ubuntu – Ubuntu, etc.
« aws_access_key » et « aws_secret_key » – fournissent les informations d’identification d’un utilisateur lors de l’exécution. Par exemple. exporter les informations d’identification dans un terminal afin que nos informations d’identification soient sécurisées et n’aient pas besoin d’être exposées nulle part.
Veuillez vous référer à la documentation des variables lien
Packer.json
Comme expliqué ci-dessus, vous savez maintenant comment Packer fonctionne avec différentes sections telles que les constructeurs et les provisionneurs. Nous avons également créé des variables et les avons utilisées dans la section des constructeurs. Passons maintenant au script final pour créer l’AMI personnalisée.
Exécutez Packer pour créer notre AMI – Script final packer.json
Étape 1: Vous avez besoin d’un fichier package.sh séparé et ajoutez les lignes ci-dessous pour installer Nginx.
#!/usr/bin/env bash
sudo apt mise à jour
sudo apt installer nginx -y
Étape 2: Créez un fichier manifest.json vide pour stocker le résultat final.
Étape 3: Créez le fichier packer.json et ajoutez les lignes ci-dessous pour créer l’AMI du packer personnalisé.
Étape 4: La sortie finale de la structure des dossiers ressemble à celle ci-dessous
Étape 5 : Maintenant que notre fichier de configuration JSON et notre script de provisioning bash sont prêts, nous pouvons exécuter Packer pour créer notre nouvelle AMI en exécutant la commande ci-dessous :
packer construire packer.json
Lorsque vous exécutez ceci, en supposant que vos informations d’identification sont correctes, vous devriez voir quelque chose de similaire à ce qui suit :
Étape 6 : Lors de l’exécution de l’étape 5, connectez-vous à la console AWS et cliquez sur EC2.
Ensuite, vous verrez les commandes exécutées dans l’instance dans le cadre du script de provisionnement et leur sortie.
Au final, vous devriez voir quelque chose de similaire à ce qui suit, en supposant que tout se passe comme prévu :
Comme vous pouvez le voir dans le résultat ci-dessous, nous avons une nouvelle AMI ! C’est si simple
Étape 7 : Enfin, la sortie de l’AMI sera dans le fichier manifest.json, comme indiqué ci-dessous.
Conclusion:
Packer est un excellent logiciel qui simplifie vraiment le déploiement dans les grands et petits environnements virtualisés/conteneurs. Il peut être utilisé avec de nombreuses autres plates-formes de virtualisation et cloud, notamment, mais sans s’y limiter, GCP, AWS, AZURE, etc.
Source link