Partager via


Tutoriel : Installer des applications dans des groupes de machines virtuelles identiques avec Azure CLI

Pour exécuter des applications sur des instances de machine virtuelle d’un groupe identique, vous devez d’abord installer les composants d’application et les fichiers requis. Dans un didacticiel précédent, vous avez appris à créer et utiliser une image personnalisée de machine virtuelle pour déployer vos instances de machine virtuelle. Cette image personnalisée comprenait l’installation et la configuration manuelles d’applications. Vous pouvez également automatiser l’installation des applications pour un groupe identique après le déploiement de chaque instance de machine virtuelle, ou mettre à jour une application déjà exécutée dans un groupe identique. Ce didacticiel vous montre comment effectuer les opérations suivantes :

  • Installer automatiquement des applications dans votre groupe identique
  • Utiliser l’extension de script personnalisé Azure
  • Mettre à jour une application en cours d’exécution dans un groupe identique

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

Prérequis

  • Cet article nécessite la version 2.0.29 ou ultérieure d’Azure CLI. Si vous utilisez Azure Cloud Shell, la version la plus récente est déjà installée.

Qu’est-ce que l’extension de script personnalisé Azure ?

L’extension de script personnalisé télécharge et exécute des scripts sur des machines virtuelles Azure. Cette extension est utile pour la configuration post-déploiement, l’installation de logiciels ou toute autre tâche de configuration ou de gestion. Des scripts peuvent être téléchargés à partir de Stockage Azure ou de GitHub, ou fournis dans le portail Azure lors de l’exécution de l’extension.

L’extension de script personnalisé s’intègre aux modèles Azure Resource Manager et peut être utilisée avec Azure CLI, Azure PowerShell, le Portail Azure ou l’API REST. Pour plus d’informations, consultez Vue d’ensemble de l’extension de script personnalisé.

Pour utiliser l’extension de script personnalisé avec l’interface CLI Azure, vous créez un fichier JSON qui définit les fichiers à obtenir et les commandes à exécuter. Ces définitions JSON peuvent être réutilisées sur plusieurs déploiements de groupe identique pour garantir des installations d’applications cohérentes.

Créer une définition d’extension de script personnalisé

Pour voir l’extension de script personnalisé en action, il faut créer un groupe identique qui installe le serveur web NGINX et affiche le nom d’hôte de l’instance de machine virtuelle du groupe identique. La définition d’extension de script personnalisé suivante télécharge un exemple de script à partir de GitHub, installe les packages requis, puis écrit le nom d’hôte de l’instance de machine virtuelle sur une page HTML de base.

Dans l’interpréteur de commandes actuel, créez un fichier nommé customConfig.json et collez la configuration suivante. Par exemple, créez le fichier dans l’interpréteur de commandes Cloud et non sur votre ordinateur local. Vous pouvez utiliser l’éditeur de votre choix. Dans ce tutoriel, vous utilisez Vi. Entrez vi dans Cloud Shell. Collez le code JSON ci-dessous dans l’éditeur et tapez :w customConfig.json.

{
  "fileUris": ["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx.sh"],
  "commandToExecute": './automate_nginx.sh'
}

Notes

Il peut être nécessaire d’inverser l’utilisation des guillemets simples (') et des guillemets doubles (") au sein du bloc JSON si vous décidez de référencer le JSON directement (au lieu de référencer le fichier customConfig.json) dans le paramètre --settings ci-dessous.

Créer un groupe identique

Important

À compter de novembre 2023, les groupes de machines virtuelles identiques créés à l'aide de PowerShell et d'Azure CLI utilisent par défaut le mode d'orchestration flexible si aucun mode d'orchestration n'est spécifié. Pour plus d’informations sur ce changement et les actions que vous devez entreprendre, consultez l’article Changement cassant pour les clients VMSS PowerShell/CLI – Hub Communauté Microsoft

Créez un groupe de ressources avec la commande az group create. L’exemple suivant crée un groupe de ressources nommé myResourceGroup à l’emplacement eastus :

az group create --name myResourceGroup --location eastus

Créez à présent un groupe de machines virtuelles identiques avec az vmss create. L’exemple suivant crée un groupe identique nommé myScaleSet, et génère des clés SSH si elles n’existent pas :

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --image Ubuntu2204 \
  --orchestration-mode Flexible \
  --admin-username azureuser \
  --generate-ssh-keys

La création et la configuration des l’ensemble des ressources et des machines virtuelles du groupe identique prennent quelques minutes.

Appliquer l’extension de script personnalisé

Appliquez la configuration de l’extension de script personnalisé aux instances de machine virtuelle dans votre groupe identique avec az vmss extension set. L’exemple suivant applique la configuration customConfig.json aux instances de machine virtuelle myScaleSet dans le groupe de ressources nommé myResourceGroup :

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings customConfig.json

Attention

Les noms de fichier respectent la casse. Utilisez le nom de fichier exact indiqué dans ces instructions pour éviter un échec.

Appliquer l’extension aux instances de groupe identique existantes

Mettez à niveau toutes les instances pour appliquer le script personnalisé. La mise à niveau peut prendre quelques minutes.

az vmss update-instances --resource-group myResourceGroup --name myScaleSet --instance-ids "*"

Autoriser le trafic vers le port 80

Pour autoriser le flux de trafic via l’équilibreur de charge vers les machines virtuelles, le groupe de sécurité réseau par défaut doit être mis à jour.

az network nsg rule create --name AllowHTTP --resource-group myResourceGroup --nsg-name myScaleSetNSG --access Allow --priority 1010 --destination-port-ranges 80 

Tester votre groupe identique

Pour voir votre serveur web en action, obtenez l’adresse IP publique de votre équilibreur de charge avec az network public-ip show. L’exemple suivant obtient l’adresse IP pour myScaleSetLBPublicIP qui a été créée dans le cadre du groupe identique :

az network public-ip show \
  --resource-group myResourceGroup \
  --name myScaleSetLBPublicIP \
  --query [ipAddress] \
  --output tsv

Saisissez l’adresse IP publique de l’équilibreur de charge dans un navigateur web. L’équilibreur de charge répartit le trafic vers l’une de vos instances de machine virtuelle, comme illustré dans l’exemple suivant :

Page web de base dans NGINX

Laissez le navigateur web ouvert afin que vous puissiez voir une version mise à jour à l’étape suivante.

Modifier la stratégie de mise à niveau

Dans la section précédente, une mise à niveau manuelle a été nécessaire pour pouvoir appliquer l’application mise à jour à toutes les instances de groupe identique. Pour que les mises à jour soient appliquées automatiquement à toutes les instances existantes de groupe identique existantes, modifiez la stratégie de mise à niveau en la faisant passer de manuelle à automatique. Pour en savoir plus sur les stratégies de mise à niveau, consultez Stratégies de mise à niveau des groupes de machines virtuelles identiques.

az vmss update \
    --name myScaleSet \
    --resource-group myResourceGroup \
    --set upgradePolicy.mode=automatic

Déployer une mise à jour d’application

Dans l’interpréteur de commandes actuel, créez un fichier nommé customConfigv2.json et collez la configuration suivante. Cette définition exécute une version v2 mise à jour du script d’installation de l’application :

{
  "fileUris": ["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx_v2.sh"],
  "commandToExecute": "./automate_nginx_v2.sh"
}

Appliquez à nouveau la configuration de l’extension de script personnalisé à votre groupe identique avec az vmss extension set. Le fichier customConfigv2.json sert à appliquer la version mise à jour de l’application :

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings @customConfigv2.json

Étant donné que le groupe identique utilise désormais une stratégie de mise à niveau automatique, l’application mise à jour est automatiquement appliquée aux instances de groupe identique existantes. Actualisez votre navigateur web pour voir l’application mise à jour.

Page web mise à jour dans NGINX

Nettoyer les ressources

Pour supprimer votre groupe identique et les ressources supplémentaires, supprimez le groupe de ressources et toutes ses ressources avec az group delete. Le paramètre --no-wait retourne le contrôle à l’invite de commandes sans attendre que l’opération se termine. Le paramètre --yes confirme que vous souhaitez supprimer les ressources sans passer par une invite supplémentaire à cette fin.

az group delete --name myResourceGroup --no-wait --yes

Étapes suivantes

Dans ce tutoriel, vous avez appris à installer et mettre à jour automatiquement des applications dans votre groupe identique avec Azure CLI :

  • Installer automatiquement des applications dans votre groupe identique
  • Utiliser l’extension de script personnalisé Azure
  • Mettre à jour une application en cours d’exécution dans un groupe identique

Passez au didacticiel suivant pour apprendre à mettre automatiquement à l’échelle votre groupe identique.