Tutoriel : Déployer des extensions de machine virtuelle avec des modèles ARM

Découvrez comment utiliser des extensions de machines virtuelles Azure pour exécuter des tâches de configuration et d’automatisation post-déploiement sur des machines virtuelles Azure. De nombreuses extensions de machine virtuelle différentes peuvent être utilisées avec les machines virtuelles Azure. Dans ce tutoriel, vous allez déployer une extension de script personnalisée à partir d’un modèle Azure Resource Manager (modèle ARM) pour exécuter un script PowerShell sur une machine virtuelle Windows. Le script installe le serveur Web sur la machine virtuelle.

Ce tutoriel décrit les tâches suivantes :

  • Préparer un script PowerShell
  • Ouvrir un modèle de démarrage rapide
  • Modifier le modèle
  • Déployer le modèle

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

Prérequis

Pour effectuer ce qui est décrit dans cet article, vous avez besoin des éléments suivants :

Préparer un script PowerShell

Vous pouvez utiliser un script PowerShell inline ou un fichier de script. Ce tutoriel montre comment utiliser un fichier de script. Un script PowerShell avec le contenu suivant est partagé à partir de GitHub :

Install-WindowsFeature -Name Web-Server -IncludeManagementTools

Si vous choisissez de publier le fichier sur votre propre emplacement, mettez à jour l’élément fileUri du modèle plus tard dans ce tutoriel.

Ouvrir un modèle de démarrage rapide

Le dépôt Modèles de démarrage rapide Azure contient les modèles ARM. Au lieu de créer un modèle à partir de zéro, vous pouvez chercher un exemple de modèle et le personnaliser. Le modèle utilisé dans ce didacticiel se nomme Déployer une machine virtuelle Windows simple.

  1. Dans Visual Studio Code, sélectionnez Fichier>Ouvrir un fichier.

  2. Dans la zone Nom de fichier, collez l’URL suivante :

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. Pour ouvrir le fichier, sélectionnez Ouvrir. Le modèle définit cinq ressources :

  4. Enregistrez une copie du fichier sur votre ordinateur local sous le nom azuredeploy.json en sélectionnant Fichier>Enregistrer sous.

Modifier le modèle

Ajoutez une ressource d’extension de machine virtuelle au modèle existant avec le contenu suivant :

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "apiVersion": "2021-04-01",
  "name": "[format('{0}/{1}', variables('vmName'), 'InstallWebServer')]",
  "location": "[parameters('location')]",
  "dependsOn": [
    "[format('Microsoft.Compute/virtualMachines/{0}',variables('vmName'))]"
  ],
  "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.7",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/tutorial-vm-extension/installWebServer.ps1"
      ],
      "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File installWebServer.ps1"
    }
  }
}

Pour plus d’informations sur la définition de cette ressource, consultez les informations de référence sur les extensions. Voici quelques éléments importants :

  • name : étant donné que la ressource d’extension est une ressource enfant de l’objet de machine virtuelle, le nom doit être composé du préfixe du nom de la machine virtuelle. Consultez Définition du nom et du type des ressources enfants.
  • dependsOn : créez la ressource d’extension après avoir créé la machine virtuelle.
  • fileUris : il s’agit des emplacements où sont stockés les fichiers de script. Si vous choisissez de ne pas utiliser l’emplacement fourni, vous devez mettre à jour les valeurs.
  • commandToExecute : cette commande appelle le script.

Pour utiliser un script inline, supprimez fileUris et mettez à jour commandToExecute comme ceci :

powershell.exe Install-WindowsFeature -name Web-Server -IncludeManagementTools && powershell.exe remove-item 'C:\\inetpub\\wwwroot\\iisstart.htm' && powershell.exe Add-Content -Path 'C:\\inetpub\\wwwroot\\iisstart.htm' -Value $('Hello World from ' + $env:computername)

Ce script inline met également à jour le contenu de iisstart.html.

Vous devez également ouvrir le port HTTP pour pouvoir accéder au serveur web.

  1. Recherchez securityRules dans le modèle.

  2. Ajoutez la règle suivante à côté de default-allow-3389.

    {
      "name": "AllowHTTPInBound",
      "properties": {
        "priority": 1010,
        "access": "Allow",
        "direction": "Inbound",
        "destinationPortRange": "80",
        "protocol": "Tcp",
        "sourcePortRange": "*",
        "sourceAddressPrefix": "*",
        "destinationAddressPrefix": "*"
      }
    }
    

Déployer le modèle

Pour connaître la procédure de déploiement, consultez la section Déployer le modèle du Tutoriel : Créer des modèles ARM avec des ressources dépendantes. Nous vous recommandons d’utiliser un mot de passe généré pour le compte administrateur de la machine virtuelle. Consultez la section Prérequis de cet article.

À partir de Cloud Shell, exécutez la commande suivante pour récupérer l’adresse IP publique de la machine virtuelle :

(Get-AzPublicIpAddress -ResourceGroupName $resourceGroupName).IpAddress

Collez l’adresse IP dans un navigateur web. La page d’accueil Internet Information Services (IIS) par défaut s’ouvre :

Capture d’écran de la page d’accueil Internet Information Services.

Nettoyer les ressources

Lorsque vous n’en avez plus besoin, nettoyez les ressources Azure que vous avez déployées en supprimant le groupe de ressources.

  1. Dans le menu de gauche du portail Azure, sélectionnez Groupe de ressources.
  2. Dans la zone Filtrer par nom, entrez le nom du groupe de ressources.
  3. Sélectionnez le nom du groupe de ressources. Six ressources sont affichées dans le groupe de ressources.
  4. Dans le menu supérieur, sélectionnez Supprimer le groupe de ressources.

Étapes suivantes

Dans ce didacticiel, vous avez déployé une machine virtuelle et une extension de machine virtuelle. L’extension a installé le serveur Web IIS sur la machine virtuelle. Pour savoir comment utiliser l’extension Azure SQL Database pour importer un fichier BACPAC, consultez :