Creación de una aplicación web y Azure Cache for Redis mediante una plantilla

En este artículo, aprenderá a crear una plantilla de Azure Resource Manager que implementa una aplicación web de Azure Cache for Redis. Aprenderá los siguientes detalles de implementación:

  • Cómo definir los recursos que se van a implementar.
  • Cómo definir los parámetros que se especifican cuando se ejecuta la implementación.

Puede usar esta plantilla para sus propias implementaciones o personalizarla para satisfacer sus necesidades.

Para más información sobre la creación de plantillas, consulte Creación de plantillas de Azure Resource Manager. Para información sobre la sintaxis y las propiedades de JSON para los tipos de recursos de caché, consulte Tipos de recursos Microsoft.Cache.

Para ver la plantilla completa, consulte Plantilla Aplicación web con Azure Cache for Redis.

Lo que implementará

En esta plantilla, implementará lo siguiente:

  • Aplicación web de Azure
  • Azure Cache for Redis

Para ejecutar automáticamente la implementación, seleccione el botón siguiente:

Deploy to Azure

Parámetros para especificar

Con el Administrador de recursos de Azure, se definen los parámetros de los valores que desea especificar al implementar la plantilla. La plantilla incluye una sección denominada Parámetros que contiene todos los valores de los parámetros. Debe definir un parámetro para esos valores que variarán según el proyecto que vaya a implementar o el entorno en el que vaya a realizar la implementación. No defina parámetros para los valores que son constantes. Cada valor de parámetro se usa en la plantilla para definir los recursos que se implementan.

Al definir parámetros, use el campo allowedValues para especificar los valores que un usuario puede proporcionar durante la implementación. Use el campo defaultValue para asignar un valor al parámetro, si no se proporciona ningún valor durante la implementación.

Vamos a describir cada parámetro de la plantilla.

siteName

El nombre de la aplicación web que desea crear.

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

hostingPlanName

El nombre del plan de App Service que se va a crear para hospedar la aplicación web.

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

sku

El nivel de precios del plan de hospedaje.

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

La plantilla define los valores que se permiten para este parámetro y asigna un valor predeterminado de S1 si no se especifica ningún valor.

workerSize

El tamaño de la instancia del plan de hospedaje (pequeño, mediano o grande).

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

La plantilla define los valores que se permiten para este parámetro (0, 1, o 2) y asigna un valor predeterminado de 0 si no se especifica ningún valor. Los valores corresponden al tamaño pequeño, mediano y grande.

cacheSKUName

El plan de tarifa de la nueva instancia de 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."
      }
    },

La plantilla define los valores permitidos para este parámetro (Básico, Estándar o Premium) y asigna un valor predeterminado (Básico) si no se especifica ningún valor. Básico ofrece un único nodo con varios tamaños disponibles hasta 53 GB. Estándar proporciona dos nodos, principal/réplica, con varios tamaños disponibles de hasta 53 GB y un contrato de nivel de servicio del 99,9%.

cacheSKUFamily

La familia de la SKU.

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

cacheSKUCapacity

El tamaño de la nueva instancia de Azure Cache for Redis.

Familias Básico y Estándar:

    "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 capacidad de caché del valor Premium se define lo mismo, excepto que los valores permitidos van de 1 a 5 en lugar de 0 a 6.

La plantilla define los valores enteros permitidos para este parámetro (0 a 6 para las familias Básico y Estándar; 1 a 5 para la familia Premium). Si no se especifica ningún valor, la plantilla asigna un valor predeterminado de 0 para Básico y Estándar, 1 para Premium.

Los valores corresponden a los siguientes tamaños de caché:

Value Básico y Estándar
tamaño de caché
Premium
tamaño de caché
0 250 MB (valor predeterminado) N/D
1 1 GB 6 GB (valor predeterminado)
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

Variables de nombres

Esta plantilla usa variables para construir los nombres de los recursos. Usa la función uniqueString para construir un valor basado en el identificador del grupo de recursos.

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

Recursos para implementar

Plan de App Service

Crea el plan de servicio para hospedar la aplicación web. Debe proporcionar el nombre del plan a través del parámetro hostingPlanName . La ubicación del plan es la misma ubicación que se usa para el grupo de recursos. El tamaño de trabajo y el plan de tarifa se especifican en los parámetros sku y 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

Crea Azure Cache for Redis que se usa con la aplicación web. El nombre de la memoria caché se especifica en la variable cacheName .

La plantilla crea la memoria caché en la misma ubicación que el 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')]"
    }
  }
}

Aplicación web (Azure Cache for Redis)

Crea la aplicación web con el nombre especificado en la variable webSiteName .

Observe que la aplicación web está configurada con las propiedades de configuración de la aplicación que permiten trabajar con Azure Cache for Redis. Estos valores de configuración de la aplicación se crean dinámicamente de acuerdo con los valores proporcionados durante la implementación.

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

Aplicación web (RedisEnterprise)

Para RedisEnterprise, dado que los tipos de recursos son ligeramente diferentes, la manera de hacer listKeys es distinta:

{
  "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 ejecutar la implementación

Para implementar los recursos en Azure, debe haber iniciado sesión en la cuenta de Azure y debe usar el módulo de Azure Resource Manager. Para obtener información sobre cómo usar el Administrador de recursos de Azure con PowerShell de Azure o la CLI de Azure, consulte:

En los ejemplos siguientes se supone que ya dispone de un grupo de recursos en la cuenta con el nombre 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

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