使用模板创建 Web 应用和 Redis 缓存

在本主题中,你将学习如何创建用于部署 Azure Web 应用和 Redis 缓存的 Azure 资源管理器模板。你将了解如何定义要部署的资源以及如何定义执行部署时指定的参数。可将此模板用于自己的部署,或自定义此模板以满足要求。

有关创建模板的详细信息,请参阅创作 Azure 资源管理器模板

有关完整的模板,请参阅包含 Redis 缓存的 Web 应用模板

将部署的内容

在此模板中,你将部署:

  • Azure Web 应用
  • Azure Redis 缓存。

要指定的参数

使用 Azure 资源管理器,可以定义在部署模板时想要指定的值的参数。该模板具有一个名为 Parameters 的部分,其中包含所有参数值。 你应该为随着要部署的项目或要部署到的环境而变化的值定义参数。不要为永远保持不变的值定义参数。每个参数值可在模板中用来定义所部署的资源。

在定义参数时,请使用 allowedValues 字段来指定用户在部署过程中可以提供哪些值。如果在部署过程中未提供任何值,请使用 defaultValue 字段为该参数赋值。

下面介绍模板中的每个参数。

siteName

要创建的网站的名称。

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

hostingPlanName

用于托管网站的 App Service 计划的名称。

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

sku

托管计划的定价层。

"sku": {
  "type": "string",
  "allowedValues": [
    "F1",
    "D1",
    "B1",
    "B2",
    "B3",
    "S1",
    "S2",
    "S3"
  ],
  "defaultValue": "S1",
  "metadata": {
    "description": "The pricing tier for the hosting plan."
  }
}

模板将定义此参数允许的值,如果未指定任何值,则分配默认值 (S1)。

workerSize

托管计划的实例大小(small、medium 或 large)。

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

模板将定义此参数允许的值(0、1 或 2),如果未指定任何值,则分配默认值 (0)。这些值分别对应于 small、medium 和 large。

cacheSKUName

新 Azure Redis 缓存的定价层。

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

模板将定义此参数允许的值(Basic 或 Standard),如果未指定任何值,则分配默认值 (Standard)。Basic 提供单个节点,该节点具有多种大小,最大大小为 53 GB。Standard 提供“主/副本”两个节点,这些节点具有多种大小(最大 53 GB)并提供 99.9% SLA。

cacheSKUFamily

SKU 的系列。

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

cacheSKUCapacity

新 Azure Redis 缓存实例的大小。

"cacheSKUCapacity": {
  "type": "int",
  "allowedValues": [
    0,
    1,
    2,
    3,
    4,
    5,
    6
  ],
  "defaultValue": 0,
  "metadata": {
    "description": "The size of the new Azure Redis Cache instance. "
  }
}

模板将定义此参数允许的值(0、1、2、3、4、 5 或 6),如果未指定任何值,则分配默认值 (1)。这些数字对应于以下缓存大小:0 = 250 MB,1 = 1 GB,2 = 2.5 GB,3 = 6 GB,4 = 13 GB,5 = 26 GB,6 = 53 GB

名称变量

此模板使用变量来构造资源的名称。它使用 uniqueString 函数来构造基于资源组 ID 的值。

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

要部署的资源

App Service 计划

创建用于托管网站的服务计划。通过 hostingPlanName 参数提供计划的名称。计划的位置与用于资源组的位置相同。定价层和辅助角色大小在 skuworkerSize 参数中指定

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

Redis 缓存

创建用于 Web 应用的 Azure Redis 缓存。缓存的名称在 cacheName 变量中指定。

该模板将在资源组所在的同一位置中创建缓存。

{
  "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 应用

使用 webSiteName 变量中指定的名称创建 Web 应用。

请注意,在 Web 应用中配置的应用设置属性使其可与 Redis 缓存配合工作。此应用设置是根据部署期间提供了值动态创建的。

{
  "apiVersion": "2015-08-01",
  "name": "[variables('webSiteName')]",
  "type": "Microsoft.Web/sites",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Web/serverFarms/', variables('hostingPlanName'))]",
    "[concat('Microsoft.Cache/Redis/', variables('cacheName'))]"
  ],
  "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('cacheName'),'.redis.cache.chinacloudapi.cn,abortConnect=false,ssl=true,password=', listKeys(resourceId('Microsoft.Cache/Redis', variables('cacheName')), '2015-08-01').primaryKey)]"
      }
    }
  ]
}

运行部署的命令

若要将资源部署到 Azure,必须登录到 Azure 帐户,并且必须使用 Azure Resource Manager 模块。 若要了解配合使用 Azure Resource Manager 和 Azure PowerShell 或 Azure CLI 的相关信息,请参阅:

以下示例假定你的帐户中已具有一个指定名称的资源组。

PowerShell

New-AzureRmResourceGroupDeployment -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-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/201-web-app-with-redis-cache/azuredeploy.json -g ExampleDeployGroup