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

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

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

Pode utilizar este modelo para as suas próprias implementações ou personalizá-lo para satisfazer as suas necessidades.

Para obter mais informações sobre a criação de modelos, consulte Authoring Azure Resource Manager templates (Criar modelos do Azure Resource Manager). Para saber mais sobre a sintaxe JSON e as propriedades dos tipos de recursos de cache, consulte Tipos de recursos Microsoft.Cache.

Para obter o modelo completo, consulte Aplicativo Web com Cache do Azure para modelo Redis.

O que você implantará

Neste modelo, você implanta:

  • Aplicação Web do Azure
  • Cache do Azure para Redis

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

Deploy to Azure

Parâmetros a especificar

Com o Azure Resource Manager, define parâmetros para os valores que pretende especificar quando o modelo é implementado. 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 com base no projeto que você está implantando ou no ambiente em que está implantando. Não defina parâmetros para valores que são constantes. Cada valor de parâmetro é utilizado no modelo para definir os recursos que são implementados.

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 ao parâmetro, se nenhum valor for fornecido durante a implantação.

Vamos descrever cada parâmetro no modelo.

Nome do site

O nome do aplicativo Web que você deseja criar.

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

hostingPlanName

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

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

sku

O nível de preço para o 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 de S1 se nenhum valor for 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, , 1ou 2), e atribui um valor padrão de 0 se nenhum valor for especificado. Os valores correspondem a pequenos, médios e grandes.

cacheSKUName

A camada de preços 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 esse parâmetro (Basic, Standard ou Premium) e atribui um valor padrão (Basic) se nenhum valor for especificado. O Basic fornece um único nó com vários tamanhos disponíveis até 53 GB. O 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 para o 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 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. "
      }
    }

A capacidade de cache de valor Premium é definida da mesma forma, exceto que os valores permitidos são executados 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 Basic e Standard; 1 a 5 para a família Premium). Se nenhum valor for especificado, o modelo atribuirá um valor padrão de 0 para Basic 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
5 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

Variáveis para nomes

Este modelo usa variáveis para construir nomes para os recursos. Ele usa a função uniqueString para construir um valor com base no 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 implementar

Plano do Serviço de Aplicações

Cria o plano de serviço para hospedar o aplicativo Web. Você fornece o nome do plano por meio do parâmetro hostingPlanName . O local do plano é o mesmo local usado para o grupo de recursos. A camada 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 do Azure para Redis

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 propriedades de configuração de aplicativo que permitem que ele funcione com o Cache do Azure para Redis. Essas configurações do 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)]"
      }
    }
  ]
}

Aplicação 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 implementação

Para implementar os recursos no Azure, deve ter a sessão iniciada na sua conta do Azure e deve utilizar o módulo do Azure Resource Manager. Para saber mais sobre como utilizar o Azure Resource Manager com o Azure PowerShell ou com a CLI do Azure, veja:

Os exemplos seguintes partem do princípio em como já tem um grupo de recursos na 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