Een web-app plus Azure Cache voor Redis maken met behulp van een sjabloon

In dit artikel leert u hoe u een Azure Resource Manager-sjabloon maakt waarmee een Azure-web-app met Azure Cache voor Redis wordt geïmplementeerd. U leert de volgende implementatiedetails:

  • Definiëren welke resources worden geïmplementeerd
  • Parameters definiëren die worden opgegeven wanneer de implementatie wordt uitgevoerd

U kunt deze sjabloon gebruiken voor uw eigen implementaties of de sjabloon aanpassen aan uw eisen.

Zie Azure Resource Manager-sjablonen samenstellen voor meer informatie over het maken van sjablonen. Zie Microsoft.Cache-resourcetypen voor meer informatie over de JSON-syntaxis en eigenschappen voor cacheresourcetypen.

Zie Web-app met Azure Cache voor Redis sjabloon voor de volledige sjabloon.

Wat u gaat implementeren

In deze sjabloon implementeert u:

  • Azure Web App
  • Azure Cache voor Redis

Als u de implementatie automatisch wilt uitvoeren, selecteert u de volgende knop:

Deploy to Azure

Parameters die moeten worden opgegeven

Met Azure Resource Manager kunt u parameters definiëren voor waarden die u wilt opgeven wanneer de sjabloon wordt geïmplementeerd. De sjabloon bevat een sectie met de naam Parameters die alle parameterwaarden bevat. U moet een parameter definiëren voor de waarden die variëren op basis van het project dat u implementeert of de omgeving waarnaar u implementeert. Definieer geen parameters voor waarden die constant zijn. De waarde van elke parameter wordt gebruikt in de sjabloon voor het definiëren van de resources die worden geïmplementeerd.

Wanneer u parameters definieert, gebruikt u het veld allowedValues om op te geven welke waarden een gebruiker tijdens de implementatie kan opgeven. Gebruik het veld DefaultValue om een waarde toe te wijzen aan de parameter als er geen waarde wordt opgegeven tijdens de implementatie.

We beschrijven elke parameter in de sjabloon.

sitenaam

De naam van de web-app die u wilt maken.

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

hostingPlanName

De naam van het App Service-plan dat moet worden gebruikt voor het hosten van de web-app.

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

sku

De prijscategorie voor het hostingabonnement.

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

De sjabloon definieert de waarden die zijn toegestaan voor deze parameter en wijst een standaardwaarde toe van S1 als er geen waarde is opgegeven.

workerSize

De instantiegrootte van het hostingabonnement (klein, gemiddeld of groot).

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

De sjabloon definieert de waarden die zijn toegestaan voor deze parameter (0, 1of 2) en wijst een standaardwaarde toe van 0 als er geen waarde is opgegeven. De waarden komen overeen met klein, gemiddeld en groot.

cacheSKUName

De prijscategorie van de nieuwe Azure Cache voor Redis.

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

De sjabloon definieert de waarden die zijn toegestaan voor deze parameter (Basic, Standard of Premium) en wijst een standaardwaarde (Basic) toe als er geen waarde is opgegeven. Basic biedt één knooppunt met meerdere grootten beschikbaar tot 53 GB. Standard biedt primair/replica met twee knooppunten met meerdere grootten die beschikbaar zijn tot maximaal 53 GB en 99,9% SLA.

cacheSKUFamily

De familie voor de sku.

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

cacheSKU-capaciteit

De grootte van het nieuwe Azure Cache voor Redis-exemplaar.

Voor de Basic- en Standard-families:

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

De cachecapaciteit van de Premium-waarde wordt hetzelfde gedefinieerd, met uitzondering van de toegestane waarden van 1 tot en met 5 in plaats van 0 tot 6.

De sjabloon definieert de waarden voor gehele getallen die zijn toegestaan voor deze parameter (0 tot en met 6 voor de Basic- en Standard-families; 1 tot en met 5 voor de Premium-serie). Als er geen waarde is opgegeven, wijst de sjabloon een standaardwaarde van 0 toe voor Basic en Standard, 1 voor Premium.

De waarden komen overeen met de volgende cachegrootten:

Weergegeven als Basic en Standard
cachegrootte
Premium
cachegrootte
0 250 MB (standaard) N.v.t.
1 1 GB 6 GB (standaard)
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.v.t.

Variabelen voor namen

In deze sjabloon worden variabelen gebruikt om namen voor de resources samen te stellen. De functie uniqueString wordt gebruikt om een waarde te maken op basis van de resourcegroep-id.

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

Resources om te implementeren

App Service-plan

Hiermee maakt u het serviceplan voor het hosten van de web-app. U geeft de naam van het plan op via de parameter hostingPlanName . De locatie van het plan is dezelfde locatie die wordt gebruikt voor de resourcegroep. De prijscategorie en de werkrolgrootte worden opgegeven in de parameters sku en 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 voor Redis

Hiermee maakt u de Azure Cache voor Redis die wordt gebruikt met de web-app. De naam van de cache wordt opgegeven in de variabele cacheName .

De sjabloon maakt de cache op dezelfde locatie als de resourcegroep.

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

Web-app (Azure Cache voor Redis)

Hiermee maakt u de web-app met de naam die is opgegeven in de variabele webSiteName .

U ziet dat de web-app is geconfigureerd met app-instellingseigenschappen waarmee deze kan werken met de Azure Cache voor Redis. Deze app-instellingen worden dynamisch gemaakt op basis van waarden die tijdens de implementatie worden opgegeven.

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

Web-app (RedisEnterprise)

Voor RedisEnterprise, omdat de resourcetypen enigszins verschillen, is de manier om listKeys uit te voeren anders:

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

Opdrachten om implementatie uit te voeren

Als u resources in Azure wilt implementeren, moet u zijn aangemeld bij uw Azure-account en moet u de Azure Resource Manager-module gebruiken. Voor meer informatie over het gebruik van Azure Resource Manager in combinatie met Azure PowerShell of de Azure CLI raadpleegt u:

In de volgende voorbeelden wordt ervan uitgegaan dat u in uw account al een resourcegroep hebt met de opgegeven naam.

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