Utiliser cloud-init pour mettre à jour et installer des packages dans une machine virtuelle Linux sur Azure

Attention

Cet article fait référence à CentOS, une distribution Linux proche de l’état EOL (End Of Life). Faites le point sur votre utilisation et organisez-vous en conséquence. Pour plus d’informations, consultez les conseils d’aide relatifs à la fin de vie de CentOS.

S’applique à : ✔️ Machines virtuelles Linux ✔️ Groupes identiques flexibles

Cet article montre comment utiliser cloud-init pour mettre à jour des packages sur une machine virtuelle Linux ou un groupe de machines virtuelles identiques au moment de l’approvisionnement dans Azure. Ces scripts cloud-init s’exécutent au premier démarrage une fois que les ressources ont été approvisionnées par Azure. Pour plus d’informations sur le fonctionnement de cloud-init en mode natif dans Azure et sur les versions de Linux prises en charge, consultez Présentation de cloud-init

Mettre à jour une machine virtuelle avec cloud-init

Pour des raisons de sécurité, configurez une machine virtuelle pour appliquer les dernières mises à jour au premier démarrage. Étant donné que cloud-init fonctionne sur différentes distributions Linux, il est inutile de spécifier apt, zypper ou yum pour le gestionnaire de package. Vous définissez plutôt package_upgrade et laissez le processus cloud-init déterminer le mécanisme approprié pour la distribution en cours d’utilisation.

Pour cet exemple, nous utilisons Azure Cloud Shell. Pour afficher le processus de mise à niveau en action, créez un fichier nommé cloud_init_upgrade.txt et collez-y la configuration suivante. Vous pouvez utiliser l’éditeur de votre choix. Vérifiez que l’intégralité du fichier cloud-init est copiée, en particulier la première ligne.

Copiez le texte ci-dessous et collez-le dans le fichier cloud_init_upgrade.txt. Vérifiez que l’intégralité du fichier cloud-init est copiée, en particulier la première ligne.

#cloud-config
package_upgrade: true
packages:
- httpd

Avant le déploiement, vous devez créer un groupe de ressources avec la commande az group create. Un groupe de ressources Azure est un conteneur logique dans lequel les ressources Azure sont déployées et gérées. L’exemple suivant crée un groupe de ressources nommé myResourceGroup à l’emplacement eastus.

az group create --name myResourceGroup --location eastus

Maintenant, créez une machine virtuelle avec az vm create et spécifiez le fichier cloud-init avec le paramètre --custom-data comme suit :

az vm create \
  --resource-group myResourceGroup \
  --name vmName \
  --image imageCIURN \
  --custom-data cloud_init_upgrade.txt \
  --admin-username azureuser \
  --generate-ssh-keys

Notes

Remplacez en conséquence les valeurs myResourceGroup, vmName et imageCIURN. Assurez-vous de choisir une image avec Cloud-init.

Établissez une connexion SSH à l’adresse IP publique de votre machine virtuelle indiquée dans la sortie de la commande précédente. Entrez vos propres valeurs user et publicIpAddress, comme suit :

ssh <user>@<publicIpAddress>

Exécutez l’outil de gestion de package et vérifiez s’il existe des mises à jour :

  • Exécutez la commande suivante pour vérifier qu’il n’y a aucune mise à jour en attente
sudo yum check-update

Étant donné que cloud-init a recherché et installé des mises à jour au démarrage, il ne doit y avoir aucune mise à jour supplémentaire à appliquer.

  • Vous pouvoir voir le processus de mise à jour, le nombre de packages modifiés ainsi que l’installation de httpd en exécutant la commande suivante et en examinant la sortie.
sudo yum history
ID     | Command line                                | Date and time    | Action(s)      | Altered
--------------------------------------------------------------------------------------------------
     3 | -y install httpd                            | 2022-02-18 18:30 | Install        |    7
     2 | -y upgrade                                  | 2022-02-18 18:23 | I, O, U        |  321 EE
     1 |                                             | 2021-02-04 19:20 | Install        |  496 EE

Étapes suivantes

Pour obtenir des exemples cloud-init supplémentaires de modifications de configuration, consultez les rubriques suivantes :