Creare un'app Web e Cache Redis di Azure usando un modello
Questo articolo illustra come creare un modello di Azure Resource Manager che distribuisce un'app Web di Azure con cache di Azure per Redis. Verranno illustrati i dettagli di distribuzione seguenti:
- Come definire le risorse distribuite
- Come definire i parametri specificati quando viene eseguita la distribuzione
È possibile usare questo modello per le proprie distribuzioni o personalizzarlo in base alle esigenze.
Per altre informazioni sulla creazione dei modelli, vedere Creazione di modelli di Azure Resource Manager. Per informazioni sulla sintassi e le proprietà JSON per i tipi di risorse cache, vedere Tipi di risorse Microsoft.Cache.
Per il modello completo, vedere Web App with Azure Cache for Redis template (Modello di app Web con Cache Redis di Azure).
Elementi distribuiti
In questo modello si distribuisce:
- App Web di Azure
- Cache Redis di Azure
Per eseguire automaticamente la distribuzione, fare clic sul pulsante seguente:
Parametri da specificare
Gestione risorse di Azure permette di definire i parametri per i valori da specificare durante la distribuzione del modello. Il modello include una sezione denominata Parametri che contiene tutti i valori dei parametri. È consigliabile definire un parametro per i valori che variano in base al progetto in cui si sta distribuendo o all'ambiente in cui si esegue la distribuzione. Non definire i parametri per i valori costanti. Ogni valore di parametro nel modello viene usato per definire le risorse distribuite.
Durante la definizione dei parametri, usare il campo allowedValues per specificare i valori che l'utente può fornire durante la distribuzione. Usare il campo defaultValue per assegnare un valore al parametro, se non viene specificato alcun valore durante la distribuzione.
Di seguito è riportata la descrizione di ogni parametro del modello.
siteName
Il nome dell'app Web che si desidera creare.
"siteName":{
"type":"string"
}
hostingPlanName
Il nome del piano di servizio app da usare per l'hosting dell'app Web.
"hostingPlanName":{
"type":"string"
}
sku
Il piano tariffario del piano di hosting.
"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."
}
}
Il modello definisce i valori consentiti per questo parametro e assegna un valore predefinito se S1
non viene specificato alcun valore.
workerSize
Le dimensioni delle istanze del piano di hosting (piccole, medie o grandi dimensioni).
"workerSize":{
"type":"string",
"allowedValues":[
"0",
"1",
"2"
],
"defaultValue":"0"
}
Il modello definisce i valori consentiti per questo parametro (0
, 1
o 2
) e assegna un valore predefinito se 0
non viene specificato alcun valore. I valori corrispondono a small, medium e large.
cacheSKUName
Piano tariffario del nuovo servizio Cache Redis di Azure.
"cacheSKUName": {
"type": "string",
"allowedValues": [
"Basic",
"Standard",
"Premium"
],
"defaultValue": "Basic",
"metadata": {
"description": "The pricing tier of the new Azure Cache for Redis."
}
},
Il modello definisce i valori consentiti per questo parametro (Basic, Standard o Premium) e assegna un valore predefinito (Basic) se non viene specificato alcun valore. Basic fornisce un singolo nodo con più dimensioni disponibili fino a 53 GB. Standard fornisce due nodi di replica/primario con più dimensioni disponibili fino a 53 GB e contratto di servizio con disponibilità del 99,9%.
cacheSKUFamily
Famiglia dello SKU.
"cacheSKUFamily": {
"type": "string",
"allowedValue/s": [
"C",
"P"
],
"defaultValue": "C",
"metadata": {
"description": "The family for the sku."
}
},
cacheSKUCapacity
Dimensione della nuova istanza di Cache Redis di Azure.
Per le famiglie Basic e 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à della cache dei valori Premium è definita allo stesso modo, ad eccezione dei valori consentiti eseguiti da 1 a 5 anziché da 0 a 6.
Il modello definisce i valori interi consentiti per questo parametro (da 0 a 6 per le famiglie Basic e Standard; da 1 a 5 per la famiglia Premium). Se non viene specificato alcun valore, il modello assegna un valore predefinito pari a 0 per Basic e Standard, 1 per Premium.
I valori corrispondono alle dimensioni della cache seguenti:
Valore | Basic e Standard dimensioni cache |
Premium dimensioni cache |
---|---|---|
0 | 250 MB (impostazione predefinita) | n/d |
1 | 1 GB | 6 GB (impostazione predefinita) |
2 | 2.5 GB | 13 GB |
3 | 6 GB | 26 GB |
4 | 13 GB | 53 GB |
5 | 26 GB | 120 GB |
6 | 53 GB | n/d |
Variabili per i nomi
Questo modello si serve di variabili per costruire i nomi delle risorse. Usa la funzione uniqueString per costruire un valore basato sull'ID del gruppo di risorse.
"variables": {
"hostingPlanName": "[concat('hostingplan', uniqueString(resourceGroup().id))]",
"webSiteName": "[concat('webSite', uniqueString(resourceGroup().id))]",
"cacheName": "[concat('cache', uniqueString(resourceGroup().id))]"
},
Risorse da distribuire
Piano di servizio app
Consente di creare il piano di servizio per ospitare l'app Web. Fornire il nome del piano tramite il parametro hostingPlanName . Il percorso del piano è identico a quello usato per il gruppo di risorse. Il piano tariffario e le dimensioni del ruolo di lavoro vengono specificati nei parametri sku e 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 Redis di Azure
Crea l'istanza di Cache Redis di Azure che viene usata con l'app Web. Il nome della cache è specificato nella variabile cacheName .
Il modello crea la cache nella stessa posizione in cui si trova il gruppo di risorse.
{
"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')]"
}
}
}
App Web (cache di Azure per Redis)
Crea l'app Web con il nome specificato nella variabile webSiteName .
Si noti che l'app Web è configurata con proprietà di impostazione dell'app che consentono di usare Cache Redis di Azure. Queste impostazioni dell'app vengono create dinamicamente in base ai valori forniti durante la distribuzione.
{
"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)]"
}
}
]
}
App Web (RedisEnterprise)
Per RedisEnterprise, poiché i tipi di risorsa sono leggermente diversi, il modo per eseguire listKeys è diverso:
{
"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)]"
}
}
]
}
Comandi per eseguire la distribuzione
Per distribuire le risorse in Azure, è necessario aver eseguito l'accesso all'account Azure e usare il modulo Azure Resource Manager. Per altre informazioni su come usare Gestione risorse di Azure con Azure PowerShell o l'interfaccia della riga di comando di Azure, vedere:
- Gestire le risorse di Azure tramite Azure PowerShell
- Gestire le risorse di Azure tramite l'interfaccia della riga di comando di Azure.
Gli esempi seguenti presuppongono che nell'account sia già stato creato un gruppo di risorse con il nome specificato.
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
Interfaccia della riga di comando di Azure
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