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:

Deploy to Azure

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, 1o 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:

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