Background Image
TECHNOLOGIE

Mardi Tech : Construisons une AMI mise à jour de WordPress et du noyau avec Packer

March 29, 2022 | 4 Lecture minute

Qu'est-ce qu'une AMI ?

UneAmazon Machine Image(AMI) est une image maîtresse pour la création de serveurs virtuels dans un environnement AWS. Les images de machine sont comme des modèles qui sont configurés avec un système d'exploitation et d'autres logiciels, qui déterminent le système d'exploitation de l'utilisateur. Les types d'AMI sont classés en fonction de la région, du système d'exploitation, de l'architecture du système (32 ou 64 bits), des autorisations de lancement et du fait qu'ils sont sauvegardés par Amazon EBS ou par le magasin d'instances. Les AMI fournissent les informations nécessaires au lancement d'une instance Amazon EC2, qui est un serveur virtuel dans le nuage AWS.

Chaque AMI comprend les éléments suivants

  • Un modèle pour le volume de périphérique racine de l'instance 

  • Les autorisations de configuration qui contrôlent quels comptes Amazon Web Services (AWS) peuvent utiliser les images de machine pour démarrer une instance. 

  • Les périphériques de bloc qui spécifient le volume de périphérique racine à attacher à l'instance EC2 une fois qu'elle est lancée.

Comment créer une AMI

Il existe plusieurs outils disponibles pour construire les AMI d'or et certains des plus utilisés sont les suivants

  • Hashicorp's Packer 

  • AWS Image Builder 

Nous utiliserons Packer de Hashicorp pour créer notre AMI dorée.

Laissez-moi vous parler de Packer :

  • Packer vous permet de construire des images pour plusieurs plateformes comme AWS, Azure, GCP, Docker, etc. en utilisant les mêmes fichiers de configuration. 

  • Packer est simple en termes de journalisation et de débogage car la sortie est clairement affichée dans la ligne de commande lorsque l'image est construite. 

  • Packer utilise des fichiers JSON pour construire les composants qui sont des commandes simples et peuvent être facilement intégrés avec des pipelines CI/CD. 

  • Packer dispose d'un support intégré pour l'utilisation de divers outils de gestion de configuration comme Ansible, Chef et Puppet, ainsi que d'un support pour les scripts Shell et PowerShell pour l'installation de logiciels. 

  • Packer est distribué sous la forme d'un binaire léger et est contrôlé à l'aide d'un CLI. 

Installation de Packer sur AWS EC2 Centos

Tout d'abord, vous devez disposer d'un serveur EC2Pour commencer, vous devez disposer d'une instance EC2 fonctionnant sur AWS avec le rôle d'administrateur IAM attaché à des fins de test. J'utiliserai une instance EC2 avec l'AMI CentOS 7. Nous devons également obtenir la clé publique ssh pour l'instance et la sauvegarder en tant que packer sur les paires de clés AWS qui se trouvent dans EC2.

Pour votre système d'exploitation, vous pouvez consulter la page d'installation officielle de HashiCorp Packer à partir d'ici ; https://learn.hashicorp.com/tutorials/packer/get-started-install-cli

Vous trouverez ci-dessous les commandes d'installation pour Linux CentOS 7.

DeuxièmementNous allons installer yum config manager pour gérer nos dépôts, puis nous ajouterons le dépôt officiel HashiCorp Linux et enfin nous installerons Packer.

  • sudo yum install -y yum-utils 

  • sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo 

  • sudo yum -y install packer 

  • packer --version 

Nous pouvons maintenant commencer à créer un modèle. Créons d'abord un dossier appelé WordPress puis nous devons créer un fichier à l'intérieur qui s'appellera dev.pkr.hcl 

Copiez ce qui suit dans le fichier `dev.pkr.hcl`

Le code ci-dessous créera un noyau CentOS 7 mis à jour et une AMI WordPress installée.

packer { required_plugins { amazon = { version = ">= 0.0.1" source = "github.com/hashicorp/amazon" } } } variable "ssh_private_key_file" { default = "/home/centos/.ssh/id_rsa" } // enregistrez la clé publique ssh de votre machine locale sur aws puis remplacez le nom de la paire de clés ssh ci-dessous. variable "ssh_keypair_name" { default = "packer" } variable "source_ami_name" { default = "CentOS Linux 7 x86_64 HVM EBS ENA 1901_01-b7ee8a69-ee97-4a49-9e68-afaee216db2e-*" } variable "instance_type" { default = "t2.micro" } variable "ssh_username" { default = "centos" } variable "ami_name" { default = "bastion_wordpress_kernel_updated" } variable "region" { default = "us-east-1" } variable "owners" { default = "679593333241" } source "amazon-ebs" "image" { ami_name = "${var.ami_name} {{timestamp}}" ssh_private_key_file = "${var.ssh_private_key_file}" ssh_keypair_name = "${var.ssh_keypair_name}" instance_type = "${var.instance_type}" ssh_username = "${var.ssh_username}" region = "${var.region}" source_ami_filter { most_recent = true owners = ["${var.owners}"] filters = { name = "${var.source_ami_name}" virtualization-type = "hvm" root-device-type = "ebs" } } run_tags = { Name = "Packer instance for ${var.source_ami_name}" } } build { sources = [ "source.amazon-ebs.image" ] provisioner "shell" { inline = [ "echo Installing Telnet", "sudo yum update kernel -y", "sudo yum install telnet -y", #Changement pour ubuntu           "sudo yum install elinks -y", #Changement pour ubuntu "sudo yum install httpd -y", "sudo yum install php -y", "sudo systemctl restart httpd", "sudo systemctl enable httpd", "sudo yum install wget -y", "sudo wget https://wordpress.org/wordpress-4.0.32.tar.gz", "sudo tar -xf wordpress-4.0.32.tar.gz -C /var/www/html/", "sudo mv /var/www/html/wordpress/* /var/www/html/", "sudo yum install php-mysql -y", "sudo systemctl restart httpd", "sudo chown -R apache:apache /var/www/html/", "sudo systemctl restart httpd" ] } provisioner "breakpoint" { note = "Waiting for your verification" } }

A l'intérieur de notre dossier WordPress, lançons quelques commandes packer pour commencer à construire notre AMI.

packer init . 

packer validate . 

packer build . 

Packer va démarrer une instance EC2 pour construire notre AMI et vous pouvez vérifier si les outils sont installés en ssh à l'instance créée par packer depuis notre instance EC2. Si les outils sont installés correctement, vérifiez et continuez la construction de Packer dans notre terminal.

Build 'amazon-ebs.image' terminé après 8 minutes 5 secondes.

==> Attente terminée après 8 minutes 5 secondes

==> La construction est terminée. Les artefacts des constructions réussies sont : -> amazon-ebs.image : Les AMI ont été créées : us-east-1: ami-055afae0b53a0262e

Pour moi, cela a pris 8 minutes et 5 secondes pour terminer et créer une AMI. Vous pouvez accélérer le processus en changeant le type d'instance dans le code de l'empaqueteur ci-dessus. L'AMI WordPress & Kernel créée et mise à jour sera située sous EC2 > Images > AMI's > Owned by me

Technologie

Dernières réflexions

Explorez nos articles de blog et laissez-vous inspirer par les leaders d'opinion de nos entreprises.
Asset - Unlock the Value Thumbnail
Nuage

Transformer la planification financière : De SAP BPC à SAP Analytics Cloud (SAC)

Découvrez les avantages et les défis de la transition de SAP BPC à SAP Analytics Cloud (SAC) pour la planification financière.