Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 sur votre groupe de machines virtuelles identiques
- Utiliser l’extension de script personnalisé Azure
- Mettre à jour une application en cours d’exécution sur un groupe identique de machines virtuelles
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Azure Cloud Shell
Azure héberge Azure Cloud Shell, un environnement d’interpréteur de commandes interactif que vous pouvez utiliser dans votre navigateur. Vous pouvez utiliser Bash ou PowerShell avec Cloud Shell pour utiliser les services Azure. Vous pouvez utiliser les commandes préinstallées Cloud Shell pour exécuter le code de cet article sans avoir à installer quoi que ce soit dans votre environnement local.
Pour démarrer Azure Cloud Shell :
| Option | Exemple/Lien |
|---|---|
| Sélectionnez Essayer dans le coin supérieur droite d’un bloc de codes ou de commandes. La sélection de Essayer ne copie pas automatiquement le code ni la commande dans Cloud Shell. |
|
| Accédez à https://shell.azure.com ou sélectionnez le bouton Lancer Cloud Shell pour ouvrir Cloud Shell dans votre navigateur. |
|
| Sélectionnez le bouton Cloud Shell dans la barre de menus en haut à droite du portail Azure. |
|
Pour utiliser Azure Cloud Shell :
Démarrez Cloud Shell.
Sélectionnez le bouton Copier sur un bloc de codes (ou un bloc de commandes) pour copier le code ou la commande.
Collez le code ou la commande dans la session Cloud Shell en sélectionnant Ctrl+Maj+V sur Windows et Linux ou en sélectionnant Cmd+Maj+V sur macOS.
Sélectionnez Entrer pour exécuter le code ou la commande.
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é est compatible avec les modèles Azure Resource Manager. Elle peut également ê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 voir l’Extension de script personnalisé en action, créez un groupe identique de machines virtuelles qui installe le serveur Web IIS et renvoie le nom d’hôte de l’instance de machine virtuelle du groupe identique. La définition de l’extension de script personnalisé 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.
Créer un groupe identique de machines virtuelles
Créez un groupe de ressources avec New-AzResourceGroup. L’exemple suivant crée un groupe de ressources nommé myResourceGroup à l’emplacement USA Est :
New-AzResourceGroup -Name myResourceGroup -Location "East US"
À présent, créez un groupe de machines virtuelles identiques avec New-AzVmss. Pour distribuer le trafic aux différentes instances de machine virtuelle, un équilibreur de charge est également créé. L’équilibreur de charge inclut des règles pour distribuer le trafic sur le port TCP 80. Il permet également le trafic RDP (Bureau à distance) sur le port TCP 3389 et l’administration à distance PowerShell sur le port TCP 5985. Quand vous y êtes invité, vous pouvez définir vos propres informations d’identification administrateur pour les instances de machine virtuelle du groupe de machines virtuelles identiques :
New-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet" `
-OrchestrationMode "Flexible" `
-Location "EastUS" `
-UpgradePolicyMode "Manual" `
-VirtualNetworkName "myVnet" `
-SubnetName "mySubnet" `
-PublicIpAddressName "myPublicIPAddress" `
-LoadBalancerName "myLoadBalancer"
Il faut quelques minutes pour créer et configurer l’ensemble des ressources et des machines virtuelles du groupe identique.
Créer une définition d’extension de script personnalisé
Azure PowerShell utilise une table de hachage pour stocker le fichier à télécharger et la commande à exécuter. L’exemple suivant utilise un exemple de script tiré de GitHub. Commencez d’abord par créer cet objet de configuration comme suit :
$customConfig = @{
"fileUris" = (,"https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate-iis.ps1");
"commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File automate-iis.ps1"
}
Ensuite, appliquez l’extension de script personnalisé avec Add-AzVmssExtension. L’objet de configuration défini précédemment est passé à l’extension. Mettez à jour l’extension sur les instances du profil du groupe identique de machines virtuelles avec Update-AzVmss.
# Get information about the scale set
$vmss = Get-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet"
# Add the Custom Script Extension to install IIS and configure basic website
$vmss = Add-AzVmssExtension `
-VirtualMachineScaleSet $vmss `
-Name "customScript" `
-Publisher "Microsoft.Compute" `
-Type "CustomScriptExtension" `
-TypeHandlerVersion 1.9 `
-Setting $customConfig
# Update the scale set
Update-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Name "myScaleSet" `
-VirtualMachineScaleSet $vmss
Ajoutez l’extension aux instances du groupe identique existant
Effectuez une mise à niveau manuelle pour appliquer l’extension mise à jour à toutes les instances existantes du groupe identique de machines virtuelles. La mise à jour peut prendre quelques minutes.
Update-AzVmssInstance -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "*"
Chaque instance de machine virtuelle dans le groupe identique de machines virtuelles télécharge et exécute le script depuis GitHub. Dans un exemple plus complexe, les composants et fichiers de plusieurs applications peuvent être installés. Si le groupe identique de machines virtuelles est mis à l’échelle vers le haut, les nouvelles instances de machines virtuelles appliquent automatiquement la même définition de l’extension de script personnalisé et installent l’application requise.
Autoriser le trafic vers l’application
Pour autoriser l’accès à l’application web de base, créez un groupe de sécurité réseau avec New-AzNetworkSecurityRuleConfig et New-AzNetworkSecurityGroup. Pour plus d’informations, consultez Mise en réseau des groupes de machines virtuelles identiques Azure.
#Create a rule to allow traffic over port 80
$nsgFrontendRule = New-AzNetworkSecurityRuleConfig `
-Name myFrontendNSGRule `
-Protocol Tcp `
-Direction Inbound `
-Priority 200 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 80 `
-Access Allow
#Create a network security group and associate it with the rule
$nsgFrontend = New-AzNetworkSecurityGroup `
-ResourceGroupName "myResourceGroup" `
-Location EastUS `
-Name myFrontendNSG `
-SecurityRules $nsgFrontendRule
$vnet = Get-AzVirtualNetwork `
-ResourceGroupName "myResourceGroup" `
-Name myVnet
$frontendSubnet = $vnet.Subnets[0]
$frontendSubnetConfig = Set-AzVirtualNetworkSubnetConfig `
-VirtualNetwork $vnet `
-Name mySubnet `
-AddressPrefix $frontendSubnet.AddressPrefix `
-NetworkSecurityGroup $nsgFrontend
Set-AzVirtualNetwork -VirtualNetwork $vnet
Testez votre groupe de machines virtuelles identiques
Pour voir votre serveur web en action, obtenez l’adresse IP publique de votre équilibreur de charge avec Get-AzPublicIpAddress. L’exemple suivant affiche l’adresse IP créée dans le groupe de ressources myResourceGroup :
Get-AzPublicIpAddress -ResourceGroupName "myResourceGroup" | Select IpAddress
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 :
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, pour appliquer la version mise à jour de l’application à toutes les instances du groupe identique de machines virtuelles, une mise à niveau manuelle était nécessaire. Pour que les mises à jour soient appliquées automatiquement à toutes les instances existantes du groupe identique de machines virtuelles, remplacez la stratégie de mise à niveau manuelle par une stratégie automatique. Pour en savoir plus sur les stratégies de mise à niveau, consultez Stratégies de mise à niveau des groupes de machines virtuelles identiques.
$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
Update-Azvmss `
-ResourceGroupName "myResourceGroup" `
-Name "myScaleSet" `
-UpgradePolicyMode "Automatic" `
-VirtualMachineScaleSet $vmss
Mettre à jour le déploiement de l’application
Tout au long du cycle de vie d’un groupe identique de machines virtuelles, il se peut que vous deviez déployer une version mise à jour de votre application. Avec l’extension Custom Script, vous pouvez spécifier un script de déploiement mis à jour, puis réappliquer l’extension à votre groupe de machines virtuelles identiques.
Créez une nouvelle définition de configuration nommée customConfigv2. Cette définition exécute une version v2 mise à jour du script d’installation de l’application :
$customConfigv2 = @{
"fileUris" = (,"https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate-iis-v2.ps1");
"commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File automate-iis-v2.ps1"
}
Mettez à jour la configuration de l’extension de script personnalisé sur les instances de machine virtuelle de votre groupe identique. La définition customConfigv2 est utilisée pour appliquer la version mise à jour de l’application au groupe de machines virtuelles identiques :
$vmss = Get-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet"
$vmss.VirtualMachineProfile.ExtensionProfile[0].Extensions[0].Settings = $customConfigv2
Update-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Name "myScaleSet" `
-VirtualMachineScaleSet $vmss
Étant donné que le groupe de machines virtuelles identiques utilise désormais une stratégie de mise à niveau automatique, l’application mise à jour sera automatiquement appliquée aux instances existantes du groupe de machines virtuelles identiques. Actualisez votre navigateur web pour voir l’application mise à jour. Pour afficher la version mise à jour, actualisez le site web dans votre navigateur :
Nettoyer les ressources
Pour supprimer votre groupe identique et d’autres ressources, supprimez le groupe de ressources et toutes ses ressources avec Remove-AzResourceGroup. Le paramètre -Force confirme que vous souhaitez supprimer les ressources sans passer par une invite supplémentaire à cette fin. Le paramètre -AsJob retourne le contrôle à l’invite de commandes sans attendre que l’opération se termine.
Remove-AzResourceGroup -Name "myResourceGroup" -Force -AsJob
Étapes suivantes
Dans ce didacticiel, vous avez appris à installer et à mettre à jour automatiquement des applications sur votre groupe de machines virtuelles identiques avec Azure PowerShell :
- Installer automatiquement des applications sur votre groupe de machines virtuelles identiques
- Utiliser l’extension de script personnalisé Azure
- Mettre à jour une application en cours d’exécution dans un groupe de machines virtuelles identiques
Passez au tutoriel suivant pour apprendre à mettre à l’échelle automatiquement votre groupe identique de machines virtuelles.