Share via


Tutoriel : Utiliser des modèles de démarrage rapide Azure

Les modèles de démarrage rapide Azure constituent un référentiel de modèles fournis par la communauté. Vous pouvez utiliser les exemples de modèles dans le développement de votre modèle. Dans ce tutoriel, vous trouvez une définition de ressource de site web et vous l’ajoutez à votre propre modèle. Cette instruction prend 12 minutes.

Prérequis

Nous vous recommandons de suivre le tutoriel sur les modèles exportés, mais ce n’est pas obligatoire.

Vous avez besoin de Visual Studio Code avec l’extension Resource Manager Tools et, au choix, Azure PowerShell ou l’interface de ligne de commande Azure (Azure CLI). Pour plus d’informations, consultez les outils de modèle.

Vérifier le modèle

À la fin du précédent tutoriel, votre modèle présentait le fichier JSON suivant :

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "appServicePlanName": {
      "type": "string",
      "defaultValue": "exampleplan"
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2021-03-01",
      "name": "[parameters('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
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

Ce modèle fonctionne pour le déploiement de comptes de stockage et de plans App Service, mais vous aimeriez peut-être y ajouter un site web. Vous pouvez utiliser des modèles prédéfinis pour découvrir rapidement le code JSON nécessaire au déploiement d’une ressource.

Rechercher un modèle

  1. Ouvrez Modèles de démarrage rapide Azure.

  2. Sélectionnez la vignette intitulée Deploy a basic Linux web app (Déployer une application web Linux de base). Si vous rencontrez des difficultés pour la trouver, voici le lien direct.

  3. Sélectionnez Rechercher sur GitHub.

  4. Sélectionnez azuredeploy.json.

  5. Vérifiez le modèle. Recherchez la ressource Microsoft.Web/sites.

    Modèle Resource Manager - Site web de démarrage rapide

Réviser le modèle existant

Fusionnez le modèle de démarrage rapide avec le modèle existant :

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "appServicePlanName": {
      "type": "string",
      "defaultValue": "exampleplan"
    },
    "webAppName": {
      "type": "string",
      "metadata": {
        "description": "Base name of the resource such as web app name and app service plan "
      },
      "minLength": 2
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "php|7.0",
      "metadata": {
        "description": "The Runtime stack of current web app"
      }
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
    "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2021-03-01",
      "name": "[parameters('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": "2021-03-01",
      "name": "[variables('webAppPortalName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]"
      ],
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

Le nom de l’application web doit être unique dans Azure. Pour éviter d’avoir des noms en double, la variable webAppPortalName est mise à jour de "webAppPortalName": "[concat(parameters('webAppName'), '-webapp')]" en "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]".

Ajoutez une virgule à la fin de la définition de Microsoft.Web/serverfarms pour séparer la définition de ressource de la définition de Microsoft.Web/sites.

Il y a quelques fonctionnalités importantes à noter dans cette nouvelle ressource.

Elle comporte un élément nommé dependsOn qui est défini sur le plan App Service. Ce paramètre est obligatoire, car le plan App Service doit préexister à la création de l’application web. L’élément dependsOn indique à Resource Manager comment ordonner les ressources pour le déploiement.

La propriété serverFarmId utilise la fonction resourceId. Cette fonction obtient l’identificateur unique pour une ressource. Dans ce cas, elle obtient l’identificateur unique pour le plan App Service. L’application web est associée à un plan App Service spécifique.

Déployer un modèle

Utilisez Azure CLI ou Azure PowerShell pour déployer un modèle.

Si vous n’avez pas créé le groupe de ressources, consultez Créer un groupe de ressources. L’exemple suppose que vous avez défini la variable templateFile sur le chemin du fichier de modèle, comme indiqué dans le premier tutoriel.

New-AzResourceGroupDeployment `
  -Name addwebapp `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storagePrefix "store" `
  -storageSKU Standard_LRS `
  -webAppName demoapp

Notes

En cas d’échec du déploiement, utilisez le commutateur verbose pour obtenir des informations sur les ressources que vous créez. Utilisez le commutateur debug pour obtenir des informations supplémentaires sur le débogage.

Nettoyer les ressources

Si vous passez au tutoriel suivant, vous n’avez pas besoin de supprimer le groupe de ressources.

Si vous arrêtez maintenant, vous pouvez supprimer le groupe de ressources.

  1. Dans le portail Azure, sélectionnez Groupes de ressources dans le menu de gauche.
  2. Tapez le nom du groupe de ressources dans la zone de texte Filtre pour n’importe quel champ...
  3. Cochez la case en regard de myResourceGroup et sélectionnez myResourceGroup ou le nom de votre groupe de ressources.
  4. Sélectionnez Supprimer le groupe de ressources dans le menu supérieur.

Étapes suivantes

Vous avez appris à utiliser un modèle de démarrage rapide pour le développement de votre modèle. Dans le prochain tutoriel, vous allez ajouter des étiquettes aux ressources.