Utiliser cloud-init pour mettre à jour et installer des packages dans une machine virtuelle Linux sur Azure
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 pouvez 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 :
- Ajouter un utilisateur Linux supplémentaire à une machine virtuelle
- Exécuter un gestionnaire de package pour mettre à jour les packages existants au premier démarrage
- Use cloud-init to set hostname for a Linux VM in Azure (Utiliser cloud-init pour définir un nom d’hôte pour une machine virtuelle Linux dans Azure)
- Installer un package d’application, mettre à jour des fichiers de configuration et injecter des clés