Criar um aplicativo Web mais o Cache Redis do Azure usando um modelo

Neste artigo, você aprende como criar um modelo do Azure Resource Manager que implanta um aplicativo Web do Azure com o Cache Redis. Você aprenderá os seguintes detalhes de implantação:

  • Como definir quais recursos são implantados
  • Como definir os parâmetros que são especificados quando a implantação é executada

Você pode usar este modelo para suas próprias implantações ou personalizá-lo para atender às suas necessidades.

Para saber mais sobre a criação de modelos, consulte Criação de modelos do Azure Resource Manager. Para saber mais sobre a sintaxe JSON e as propriedades dos tipos de recurso de cache, consulte Tipos de recurso de Microsoft.Cache.

Para o modelo completo, consulte aplicativo Web com o Cache do Azure para o modelo de Redis.

O que você implantará

Neste modelo, você implanta:

  • Aplicativo Web do Azure
  • Cache Redis do Azure

Para executar a implantação automaticamente, selecione o seguinte botão:

Deploy to Azure

Parâmetros para especificar

Com o Gerenciador de Recursos do Azure, você define parâmetros para os valores que deseja especificar quando o modelo é implantado. O modelo inclui uma seção chamada Parâmetros, que contém todos os valores de parâmetro. Você deve definir um parâmetro para esses valores que variam de acordo com o projeto que você está implantando ou o ambiente no qual você está implantando. Não defina parâmetros para valores constantes. Cada valor de parâmetro é usado no modelo para definir os recursos que são implantados.

Ao definir parâmetros, use o campo allowedValues para especificar quais valores um usuário pode fornecer durante a implantação. Use o campo defaultValue para atribuir um valor para o parâmetro, se nenhum valor for fornecido durante a implantação.

Descreveremos cada parâmetro no modelo.

siteName

O nome do aplicativo Web que você deseja criar.

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

hostingPlanName

O nome do plano do Serviço de Aplicativo a usar para hospedar o aplicativo Web.

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

sku

A camada de preços do plano de hospedagem.

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

O modelo define os valores permitidos para esse parâmetro e atribui um valor padrão igual a S1 se nenhum valor é especificado.

workerSize

O tamanho da instância do plano de hospedagem (pequeno, médio ou grande).

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

O modelo define os valores permitidos para esse parâmetro (0, 1 ou 2) e atribui um valor padrão igual a 0 se nenhum valor é especificado. Os valores correspondem a pequeno, médio e grande.

cacheSKUName

O tipo de preço do novo Cache do Azure para Redis.

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

O modelo define os valores permitidos para este parâmetro (Básico, Standard ou Premium) e atribui um valor padrão (Basic) se nenhum valor for especificado. Basic fornece um único nó com vários tamanhos disponíveis, até 53 GB. Standard fornece Principal/Réplica de dois nós com vários tamanhos disponíveis, até 53 GB e SLA de 99,9%.

cacheSKUFamily

A família do SKU.

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

cacheSKUCapacity

O tamanho da nova instância do Cache do Azure para Redis.

Para as famílias Básico 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. "
      }
    }

A capacidade do cache de valor Premium é definida da mesma forma, exceto que os valores permitidos vão de 1 a 5 em vez de 0 a 6.

O modelo define os valores inteiros permitidos para este parâmetro (0 a 6 para as famílias Básico e Standard; 1 a 5 para a família Premium). Se nenhum valor for especificado, o modelo atribui um valor padrão de 0 para Básico e Standard, 1 para Premium.

Os valores correspondem aos seguintes tamanhos de cache:

Valor Básico e Standard
tamanho do cache
Premium
tamanho do cache
0 250 MB (padrão) N/D
1 1 GB 6 GB (padrão)
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

Nomes de variáveis

Este modelo usa variáveis para construir nomes para os recursos. Ele usa a função uniqueString para construir um valor com base na ID do grupo de recursos.

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

Recursos a implantar

Plano do Serviço de Aplicativo

Cria o plano de serviço para hospedar o aplicativo Web. Forneça o nome do plano por meio do parâmetro hostingPlanName . O local do plano é o mesmo usado para o grupo de recursos. O tipo de preços e o tamanho do trabalhador são especificados nos parâmetros 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 do Azure

Cria o Cache Redis do Azure que é usado com o aplicativo Web. O nome do cache é especificado na variável cacheName .

O modelo cria o cache no mesmo local que o grupo de recursos.

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

Aplicativo Web (Cache do Azure para Redis)

Cria o aplicativo Web com o nome especificado na variável webSiteName .

Observe que o aplicativo Web está configurado com as propriedades de configuração de aplicativo que o habilitam a trabalhar com o Cache Redis do Azure. Essas configurações de aplicativo são criadas dinamicamente com base nos valores fornecidos durante a implantação.

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

Aplicativo Web (RedisEnterprise)

Para RedisEnterprise, como os tipos de recursos são ligeiramente diferentes, a maneira de fazer listKeys é diferente:

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

Comandos para executar a implantação

Para implantar os recursos no Azure, você deve estar conectado à sua conta do Azure e usar o módulo do Gerenciador de Recursos do Azure. Para obter informações sobre como usar o Gerenciador de Recursos do Azure com o Azure PowerShell ou CLI do Azure, consulte:

Os exemplos a seguir pressupõem que você já tem um grupo de recursos em sua conta com o nome especificado.

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

CLI do 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