Skapa en webbapp plus Azure Cache for Redis med hjälp av en mall

I den här artikeln får du lära dig hur du skapar en Azure Resource Manager-mall som distribuerar en Azure-webbapp med Azure Cache for Redis. Du får lära dig följande distributionsinformation:

  • Så här definierar du vilka resurser som distribueras
  • Definiera parametrar som anges när distributionen körs

Du kan använda den här mallen för dina egna distributioner eller anpassa den så att den uppfyller dina krav.

Mer information om att skapa mallar finns i Redigera Azure Resource Manager-mallar. Mer information om JSON-syntaxen och egenskaperna för cacheresurstyper finns i Resurstyper för Microsoft.Cache.

Den fullständiga mallen finns i Webbapp med Azure Cache for Redis-mall.

Vad du ska distribuera

I den här mallen distribuerar du:

  • Azure Web App
  • Azure Cache for Redis

Om du vill köra distributionen automatiskt väljer du följande knapp:

Deploy to Azure

Parametrar som ska anges

Med Azure Resource Manager kan du definiera parametrar för värden som du vill ange när mallen distribueras. Mallen innehåller ett avsnitt med namnet Parametrar som innehåller alla parametervärden. Du bör definiera en parameter för de värden som varierar beroende på vilket projekt du distribuerar eller miljön som du distribuerar till. Definiera inte parametrar för värden som är konstanta. Varje parametervärde används i mallen för att definiera de resurser som distribueras.

När du definierar parametrar använder du fältet allowedValues för att ange vilka värden en användare kan ange under distributionen. Använd fältet defaultValue för att tilldela parametern ett värde, om inget värde anges under distributionen.

Vi beskriver varje parameter i mallen.

Platsnamn

Namnet på den webbapp som du vill skapa.

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

hostingPlanName

Namnet på den App Service-plan som ska användas för att vara värd för webbappen.

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

sku

Prisnivån för värdplanen.

"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."
  }
}

Mallen definierar de värden som tillåts för den här parametern och tilldelar ett standardvärde på S1 om inget värde har angetts.

workerSize

Instansstorleken för värdplanen (liten, medel eller stor).

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

Mallen definierar de värden som tillåts för den här parametern (0, 1, eller 2) och tilldelar ett standardvärde på 0 om inget värde har angetts. Värdena motsvarar små, medelstora och stora.

cacheSKUName

Prisnivån för den nya Azure Cache for Redis.

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

Mallen definierar de värden som tillåts för den här parametern (Basic, Standard eller Premium) och tilldelar ett standardvärde (Basic) om inget värde anges. Basic tillhandahåller en enskild nod med flera storlekar som är tillgängliga upp till 53 GB. Standard tillhandahåller primär/replik med två noder med flera tillgängliga storlekar på upp till 53 GB och 99,9 % serviceavtal.

cacheSKUFamily

Familjen för sku:n.

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

cacheSKUCapacity

Storleken på den nya Azure Cache for Redis-instansen.

För basic- och standardfamiljerna:

    "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. "
      }
    }

Premium-värdets cachekapacitet definieras på samma sätt, förutom att de tillåtna värdena körs från 1 till 5 i stället för från 0 till 6.

Mallen definierar de heltalsvärden som tillåts för den här parametern (0 till 6 för basic- och standardfamiljerna, 1 till 5 för Premium-familjen). Om inget värde anges tilldelar mallen standardvärdet 0 för Basic och Standard, 1 för Premium.

Värdena motsvarar följande cachestorlekar:

Värde Basic och Standard
cachestorlek
Premium
cachestorlek
0 250 MB (standard) saknas
1 1 GB 6 GB (standard)
2 2.5 GB 13 GB
3 6 GB 26 GB
4 13 GB 53 GB
5 26 GB 120 GB
6 53 GB saknas

Variabler för namn

Den här mallen använder variabler för att skapa namn för resurserna. Den använder funktionen uniqueString för att konstruera ett värde baserat på resursgrupps-ID:t.

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

Resurser som ska distribueras

App Service-plan

Skapar tjänstplanen för att vara värd för webbappen. Du anger namnet på planen via parametern hostingPlanName . Platsen för planen är samma plats som används för resursgruppen. Prisnivån och arbetsstorleken anges i parametrarna sku och 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')]"
  }
},

Azure Cache for Redis

Skapar Azure Cache for Redis som används med webbappen. Namnet på cachen anges i variabeln cacheName .

Mallen skapar cachen på samma plats som resursgruppen.

{
  "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')]"
    }
  }
}

Webbapp (Azure Cache for Redis)

Skapar webbappen med det namn som anges i variabeln webSiteName .

Observera att webbappen har konfigurerats med appinställningsegenskaper som gör att den kan fungera med Azure Cache for Redis. Dessa appinställningar skapas dynamiskt baserat på värden som anges under distributionen.

{
  "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)]"
      }
    }
  ]
}

Webbapp (RedisEnterprise)

För RedisEnterprise, eftersom resurstyperna skiljer sig något åt, är sättet att göra listKeys annorlunda:

{
  "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)]"
      }
    }
  ]
}

Kommandon för att köra distributionen

Om du vill distribuera resurserna till Azure måste du vara inloggad på ditt Azure-konto och använda Azure Resource Manager-modulen. Information om hur du använder Azure Resource Manager med Azure PowerShell eller Azure CLI hittar du här:

Följande exempel förutsätter att du redan har en resursgrupp i ditt konto med det angivna namnet.

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