Créer une application web avec un cache Azure pour Redis à l’aide d’un modèle

Dans cette rubrique, vous allez apprendre à créer un modèle Azure Resource Manager qui déploie une application web Azure avec Azure Cache pour Redis. Vous découvrirez les informations suivantes sur les déploiements :

  • comment définir les ressources à déployer ;
  • comment définir les paramètres spécifiés lors de l’exécution du déploiement.

Vous pouvez utiliser ce modèle pour vos propres déploiements, ou le personnaliser afin qu’il réponde à vos besoins.

Pour en savoir plus sur la création de modèles, voir Création de modèles Azure Resource Manager. Pour en savoir plus sur les propriétés et la syntaxe JSON des types de ressources de cache, consultez Types de ressources Microsoft.Cache.

Pour obtenir l’intégralité du modèle, consultez la page Application web avec un modèle de cache Azure pour Redis.

Ce que vous allez déployer

Dans ce modèle, vous allez déployer les éléments suivants :

  • Application web Azure
  • Cache Azure pour Redis

Pour exécuter automatiquement le déploiement, sélectionnez le bouton ci-dessous :

Deploy to Azure

Paramètres à spécifier

Azure Resource Manager vous permet de définir des paramètres pour les valeurs que vous voulez spécifier lorsque le modèle est déployé. Ce modèle inclut une section appelée Paramètres, qui contient toutes les valeurs de paramètres. Vous devez définir un paramètre pour les valeurs qui varient en fonction du projet que vous déployez ou de l’environnement dans lequel vous effectuez le déploiement. Ne définissez pas de paramètres pour les valeurs qui sont constantes. Chaque valeur de paramètre est utilisée dans le modèle pour définir les ressources déployées.

Lorsque vous définissez les paramètres, utilisez le champ allowedValues pour spécifier les valeurs qu'un utilisateur peut fournir au cours du déploiement. Utilisez le champ defaultValue pour affecter une valeur au paramètre, si aucune valeur n'est fournie pendant le déploiement.

Nous allons décrire chaque paramètre du modèle.

siteName

Le nom de l'application web que vous souhaitez créer.

"siteName":{
  "type":"string"
}

hostingPlanName

Le nom du plan App Service à utiliser pour héberger l'application web.

"hostingPlanName":{
  "type":"string"
}

sku

Le niveau de tarification du plan d'hébergement.

"sku": {
  "type": "string",
  "allowedValues": [
    "F1",
    "D1",
    "B1",
    "B2",
    "B3",
    "S1",
    "S2",
    "S3",
    "P1",
    "P2",
    "P3",
    "P4"
  ],
  "defaultValue": "S1",
  "metadata": {
    "description": "The pricing tier for the hosting plan."
  }
}

Le modèle définit les valeurs autorisées pour ce paramètre et affecte une valeur par défaut de S1 si aucune valeur n’est spécifiée.

workerSize

La taille d'instance du plan d'hébergement (petite, moyenne ou grande).

"workerSize":{
  "type":"string",
  "allowedValues":[
    "0",
    "1",
    "2"
  ],
  "defaultValue":"0"
}

Le modèle définit les valeurs autorisées pour ce paramètre (0, 1 ou 2), et affecte une valeur par défaut de 0 si aucune valeur n’est spécifiée. Les valeurs correspondent à une taille petite, moyenne et grande.

cacheSKUName

Niveau de tarification du nouveau cache Azure pour Redis.

    "cacheSKUName": {
      "type": "string",
      "allowedValues": [
        "Basic",
        "Standard",
        "Premium"
      ],
      "defaultValue": "Basic",
      "metadata": {
        "description": "The pricing tier of the new Azure Cache for Redis."
      }
    },

Le modèle définit les valeurs autorisées pour ce paramètre (De base, Standard ou Premium) et affecte une valeur par défaut (De base) si aucune valeur n’est spécifiée. Le niveau De base fournit un nœud unique disponible en plusieurs tailles, jusqu’à 53 Go. Le niveau Standard fournit deux nœuds primaire/réplica disponibles en plusieurs tailles jusqu’à 53 Go et un contrat SLA de 99,9 %.

cacheSKUFamily

Famille de la référence (SKU).

    "cacheSKUFamily": {
      "type": "string",
      "allowedValue/s": [
        "C",
        "P"
      ],
      "defaultValue": "C",
      "metadata": {
        "description": "The family for the sku."
      }
    },

cacheSKUCapacity

Taille de la nouvelle instance de cache Azure pour Redis.

Pour les familles De base et Standard :

    "cacheSKUCapacity": {
      "type": "int",
      "allowedValues": [
        0,
        1,
        2,
        3,
        4,
        5,
        6
      ],
      "defaultValue": 0,
      "metadata": {
        "description": "The size of the new Azure Cache for Redis instance. "
      }
    }

La capacité de la mémoire cache de la valeur Premium est définie de la même manière, sauf que les valeurs autorisées vont de 1 à 5 au lieu de 0 à 6.

Le modèle définit les valeurs entières autorisées pour ce paramètre (0 à 6 pour les familles De base et Standard ; 1 à 5 pour la famille Premium). Si aucune valeur n'est spécifiée, le modèle affecte une valeur par défaut de 0 pour les valeurs De base et Standard, et de 1 pour Premium.

Les valeurs correspondent aux tailles de cache suivantes :

Valeur De base et Standard
taille du cache
Premium
taille du cache
0 250 Mo (par défaut) n/a
1 1 Go 6 Go (par défaut)
2 2,5 Go 13 Go
3 6 Go 26 Go
4 13 Go 53 Go
5 26 Go 120 Go
6 53 Go n/a

Variables pour les noms

Ce modèle utilise des variables afin de créer des noms pour les ressources. Elle utilise la fonction uniqueString pour construire une valeur basée sur l’ID du groupe de ressources.

"variables": {
  "hostingPlanName": "[concat('hostingplan', uniqueString(resourceGroup().id))]",
  "webSiteName": "[concat('webSite', uniqueString(resourceGroup().id))]",
  "cacheName": "[concat('cache', uniqueString(resourceGroup().id))]"
},

Ressources à déployer

Plan App Service

Crée le plan de service pour l'hébergement de l'application web. Vous fournissez le nom du plan à l'aide du paramètre hostingPlanName . L’emplacement du plan est identique à celui utilisé pour le groupe de ressources. Le niveau tarifaire et la taille de worker sont spécifiés dans les paramètres sku et workerSize.

{
  "apiVersion": "2015-08-01",
  "name": "[parameters('hostingPlanName')]",
  "type": "Microsoft.Web/serverfarms",
  "location": "[resourceGroup().location]",
  "sku": {
    "name": "[parameters('sku')]",
    "capacity": "[parameters('workerSize')]"
  },
  "properties": {
    "name": "[parameters('hostingPlanName')]"
  }
},

Cache Azure pour Redis

Crée le cache Azure pour Redis utilisé avec l’application web. Le nom du cache est spécifié dans la variable cacheName .

Le modèle crée le cache au même emplacement que le groupe de ressources.

{
  "name": "[variables('cacheName')]",
  "type": "Microsoft.Cache/Redis",
  "location": "[resourceGroup().location]",
  "apiVersion": "2015-08-01",
  "dependsOn": [ ],
  "tags": {
    "displayName": "cache"
  },
  "properties": {
    "sku": {
      "name": "[parameters('cacheSKUName')]",
      "family": "[parameters('cacheSKUFamily')]",
      "capacity": "[parameters('cacheSKUCapacity')]"
    }
  }
}

Application web (Azure Cache pour Redis)

Crée l’application web avec le nom spécifié dans la variable webSiteName .

Notez que l’application web est configurée selon des paramètres qui lui permettent d’utiliser le cache Azure pour Redis. Ces paramètres sont créés de façon dynamique en fonction des valeurs fournies lors du déploiement.

{
  "apiVersion": "2015-08-01",
  "name": "[variables('webSiteName')]",
  "type": "Microsoft.Web/sites",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Web/serverFarms/', variables('hostingPlanName'))]"
  ],
  "tags": {
    "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', variables('hostingPlanName'))]": "empty",
    "displayName": "Website"
  },
  "properties": {
    "name": "[variables('webSiteName')]",
    "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]"
  },
  "resources": [
    {
      "apiVersion": "2015-08-01",
      "type": "config",
      "name": "appsettings",
      "dependsOn": [
        "[concat('Microsoft.Web/Sites/', variables('webSiteName'))]",
        "[concat('Microsoft.Cache/Redis/', variables('cacheName'))]"
      ],
      "properties": {
       "CacheConnection": "[concat(variables('cacheHostName'),'.redis.cache.windows.net,abortConnect=false,ssl=true,password=', listKeys(resourceId('Microsoft.Cache/Redis', variables('cacheName')), '2015-08-01').primaryKey)]"
      }
    }
  ]
}

Application web (RedisEnterprise)

Pour RedisEnterprise, étant donné que les types de ressources sont légèrement différents, la manière de créer des listKeys est différente :

{
  "apiVersion": "2015-08-01",
  "name": "[variables('webSiteName')]",
  "type": "Microsoft.Web/sites",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Web/serverFarms/', variables('hostingPlanName'))]"
  ],
  "tags": {
    "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', variables('hostingPlanName'))]": "empty",
    "displayName": "Website"
  },
  "properties": {
    "name": "[variables('webSiteName')]",
    "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]"
  },
  "resources": [
    {
      "apiVersion": "2015-08-01",
      "type": "config",
      "name": "appsettings",
      "dependsOn": [
        "[concat('Microsoft.Web/Sites/', variables('webSiteName'))]",
        "[concat('Microsoft.Cache/RedisEnterprise/databases/', variables('cacheName'), "/default")]",
      ],
      "properties": {
       "CacheConnection": "[concat(variables('cacheHostName'),abortConnect=false,ssl=true,password=', listKeys(resourceId('Microsoft.Cache/RedisEnterprise', variables('cacheName'), 'default'), '2020-03-01').primaryKey)]"
      }
    }
  ]
}

Commandes pour l’exécution du déploiement

Pour déployer les ressources sur Azure, vous devez être connecté à votre compte Azure et utiliser le module Azure Resource Manager. Pour en savoir plus sur l'utilisation de ce module avec Azure PowerShell ou la CLI Azure, consultez :

Les exemples suivants supposent que vous disposez déjà d'un groupe de ressources dans votre compte, qui porte le nom spécifié.

PowerShell

New-AzResourceGroupDeployment -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.web/web-app-with-redis-cache/azuredeploy.json -ResourceGroupName ExampleDeployGroup

Azure CLI

azure group deployment create --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.web/web-app-with-redis-cache/azuredeploy.json -g ExampleDeployGroup