Tutoriel : Déployer un modèle ARM local

Découvrez comment déployer un modèle ARM (Azure Resource Manager) à partir de votre ordinateur local Il faut compter environ 8 minutes pour effectuer ce tutoriel.

Ce tutoriel est le premier d’une série. Au fur et à mesure que vous progressez dans la série, vous modularisez le modèle en créant un modèle lié, stockez le modèle lié dans un compte de stockage et le sécurisez à l’aide du jeton SAS, et apprenez à créer un pipeline DevOps pour déployer des modèles. Cette série porte sur le déploiement de modèles. Si vous souhaitez apprendre le développement de modèles, consultez les tutoriels pour les débutants.

Obtenir les outils

Commençons par nous assurer que vous disposez des outils indispensables pour déployer des modèles.

Déploiement en ligne de commande

Vous avez besoin d’Azure PowerShell ou d’Azure CLI pour déployer le modèle. Pour les instructions d’installation, consultez :

Après avoir installé Azure PowerShell ou Azure CLI, prenez soin de vous connecter une première fois. Pour obtenir de l’aide, consultez Se connecter - PowerShell ou Se connecter - Azure CLI.

Éditeur (facultatif)

Les modèles sont des fichiers JSON. Pour examiner/modifier des modèles, vous avez besoin d’un bon éditeur JSON. Nous conseillons Visual Studio Code avec l’extension Outils Resource Manager. Si vous devez installer ces outils, consultez Démarrage rapide : Créer des modèles ARM avec Visual Studio Code.

Vérifier le modèle

Le modèle déploie un compte de stockage, un plan App Service et une application web. Si vous êtes intéressé par la création du modèle, vous pouvez suivre le tutoriel sur les modèles de démarrage rapide. Toutefois, cela n’est pas obligatoire pour effectuer ce tutoriel.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "projectName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11,
      "metadata": {
        "description": "Specify a project name that is used to generate resource names."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specify a location for the resources."
      }
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ],
      "metadata": {
        "description": "Specify the storage account type."
      }
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "php|7.0",
      "metadata": {
        "description": "Specify the Runtime stack of current web app"
      }
    }
  },
  "variables": {
    "storageAccountName": "[format('{0}{1}', parameters('projectName'), uniqueString(resourceGroup().id))]",
    "webAppName": "[format('{0}WebApp', parameters('projectName'))]",
    "appServicePlanName": "[format('{0}Plan', parameters('projectName'))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2023-01-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2022-09-01",
      "name": "[variables('appServicePlanName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "B1",
        "tier": "Basic",
        "size": "B1",
        "family": "B",
        "capacity": 1
      },
      "kind": "linux",
      "properties": {
        "perSiteScaling": false,
        "reserved": true,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2022-09-01",
      "name": "[variables('webAppName')]",
      "location": "[parameters('location')]",
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
      ]
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2023-01-01').primaryEndpoints]"
    }
  }
}

Important

Ce nom doit être unique et comprendre entre 3 et 24 caractères, uniquement des lettres en minuscules et des nombres. La variable storageAccountName de l’exemple de modèle combine le maximum de 11 caractères du paramètre projectName avec une valeur uniqueString de 13 caractères.

Enregistrez une copie du modèle sur votre ordinateur local avec l’extension .json, par exemple azuredeploy.json. Vous allez déployer ce modèle ultérieurement dans le tutoriel.

Connexion à Azure

Pour commencer à utiliser Azure PowerShell/Azure CLI afin de déployer un modèle, connectez-vous avec vos informations d’identification Azure.

Connect-AzAccount

Si vous avez plusieurs abonnements Azure, sélectionnez celui que vous souhaitez utiliser. Remplacez [SubscriptionID/SubscriptionName] et les crochets [] par vos informations d’abonnement :

Set-AzContext [SubscriptionID/SubscriptionName]

Créer un groupe de ressources

Lorsque vous déployez un modèle, vous indiquez un groupe de ressources pour contenir les ressources. Avant d’exécuter la commande de déploiement, créez le groupe de ressources avec Azure CLI ou Azure PowerShell. Sélectionnez les onglets dans la section de code suivante pour choisir entre Azure PowerShell et Azure CLI. Les exemples CLI de cet article sont écrits pour l’interpréteur de commandes Bash.

$projectName = Read-Host -Prompt "Enter a project name that is used to generate resource and resource group names"
$resourceGroupName = "${projectName}rg"

New-AzResourceGroup `
  -Name $resourceGroupName `
  -Location "Central US"

Déployer un modèle

Utilisez l’une des options de déploiement, ou les deux, pour déployer le modèle.

$projectName = Read-Host -Prompt "Enter the same project name"
$templateFile = Read-Host -Prompt "Enter the template file path and file name"
$resourceGroupName = "${projectName}rg"

New-AzResourceGroupDeployment `
  -Name DeployLocalTemplate `
  -ResourceGroupName $resourceGroupName `
  -TemplateFile $templateFile `
  -projectName $projectName `
  -verbose

Pour en savoir plus sur le déploiement de modèles avec Azure PowerShell, consultez Déployer des ressources à l’aide de modèles ARM et d’Azure PowerShell.

Nettoyer les ressources

Nettoyez les ressources que vous avez déployées en supprimant le groupe de ressources.

  1. Dans le portail Azure, sélectionnez Groupe de ressources dans le menu de gauche.
  2. Entrez le nom du groupe de ressources dans le champ Filtrer par nom.
  3. Sélectionnez le nom du groupe de ressources.
  4. Sélectionnez Supprimer le groupe de ressources dans le menu supérieur.

Étapes suivantes

Vous avez appris à déployer un modèle local. Dans le tutoriel suivant, vous allez séparer le modèle en un modèle principal et un modèle lié, et apprendre à stocker et à sécuriser le modèle lié.