教程:从 Azure 门户使用导出的 JSON 模板

在本教程系列中,你已创建一个用于部署 Azure 存储帐户的 Bicep 文件。 在接下来的两篇教程中,你将添加一个应用服务计划和一个网站。 本教程介绍如何从 Azure 门户导出 JSON 模板(无需从头开始创建模板),以及如何使用 Azure 快速入门模板中的示例模板。 你可以根据自己的用途自定义这些模板。 本教程重点介绍如何导出模板,以及自定义 Bicep 文件的结果。 完成本教程需要大约 14 分钟

注意

本文包含 Bicep 示例。 Bicep 目前为预览版。 有关详细信息,请参阅 Bicep 项目

先决条件

建议完成有关输出的教程,但这不是一项要求。

必须有包含 Bicep 扩展的 Visual Studio Code,以及 Azure PowerShell 或 Azure CLI。 有关详细信息,请参阅 Bicep 工具

查看 Bicep 文件

在上一篇教程结束时,Bicep 文件包含以下内容:

@minLength(3)
@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_RAGRS'
  'Premium_LRS'
])
param storageSKU string = 'Standard_LRS'

param location string = resourceGroup().location

var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'

resource stg 'Microsoft.Storage/storageAccounts@2019-04-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: storageSKU
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

output storageEndpoint object = stg.properties.primaryEndpoints

此 Bicep 文件非常适合用于部署存储帐户,但你可能想要在其中添加更多资源。 可以从现有的资源导出 JSON 模板,以快速获取该资源的 JSON。 接下来将 JSON 转换为 Bicep,然后可将转换内容添加到 Bicep 文件中。

创建应用服务计划

  1. 登录 Azure 门户

  2. 选择“创建资源”。

  3. 在“搜索市场”中输入“应用服务计划”,然后选择“应用服务计划”。 请不要选择“应用服务计划(经典)”

  4. 选择“创建” 。

  5. 输入:

    • 订阅:选择 Azure 订阅。
    • 资源组:选择“新建”,然后指定名称。 提供的资源组名称应该与过去在本教程系列中使用的名称不同。
    • 名称:输入应用服务计划的名称。
    • 操作系统:选择“Linux”。
    • 区域:选择一个 Azure 位置。 例如,中国北部
    • 定价层:为了节省成本,请将 SKU 更改为“基本 B1”(在“开发/测试”下)。

    Resource Manager template export template portal

  6. 选择“查看并创建”。

  7. 选择“创建” 。 创建资源需要花费片刻时间。

导出模板

Azure 门户目前仅支持导出 JSON 模板。 可使用一些工具将 JSON 模板反向编译为 Bicep 文件。

  1. 选择“转到资源”。

    Go to resource

  2. 选择“导出模板”。

    Resource Manager template export template

    导出模板功能将提取资源的当前状态,并生成用于部署该资源的模板。 导出模板可能有助于快速获取部署资源所需的 JSON。

  3. Microsoft.Web/serverfarms 定义和参数定义是所需的部分。

    Resource Manager template export template exported template

    重要

    通常,导出的模板比创建模板时所需的信息更详细。 例如,导出的模板中的 SKU 对象包含五个属性。 此模板是可行的,但你只需使用 name 属性。 可以从导出的模板着手,然后根据要求对其进行修改。

  4. 选择“下载” 。 下载的 zip 文件包含 template.jsonparameters.json。 解压缩文件。

  5. 浏览到 https://bicepdemo.z22.web.core.chinacloudapi.cn/,选择“反向编译”,然后打开“template.json”。 可在 Bicep 中获取模板。

修改现有的 Bicep 文件

反向编译的模板提供所需的大部分 Bicep,但你需要根据 Bicep 文件对其进行自定义。 请特别注意你的 Bicep 文件与导出的 Bicep 文件之间的参数和变量差异。 很明显,导出过程并不知道你在自己的 Bicep 文件中定义的参数和变量。

以下示例显示了在 Bicep 文件中添加的内容。 其中包含导出的代码以及一些更改。 第一,它会更改参数的名称以符合命名约定。 第二,它对应用服务计划的位置使用 location 参数。 第三,它删除默认值正常的所有属性。

请复制整个文件,并将你的 Bicep 文件替换为该文件的内容。

@minLength(3)
@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_RAGRS'
  'Premium_LRS'
])
param storageSKU string = 'Standard_LRS'

param location string = resourceGroup().location
param appServicePlanName string = 'exampleplan'

var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'

resource stg 'Microsoft.Storage/storageAccounts@2019-04-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: storageSKU
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

resource appPlan 'Microsoft.Web/serverfarms@2016-09-01' = {
  name: appServicePlanName
  location: location
  sku: {
    name: 'B1'
    tier: 'Basic'
    size: 'B1'
    family: 'B'
    capacity: 1
  }
  kind: 'linux'
  properties: {
    perSiteScaling: false
    reserved: true
    targetWorkerCount: 0
    targetWorkerSizeId: 0
  }
}

output storageEndpoint object = stg.properties.primaryEndpoints

部署 Bicep 文件

使用 Azure CLI 或 Azure PowerShell 来部署 Bicep 文件。

如果尚未创建资源组,请参阅创建资源组。 此示例假定你已按第一篇教程所述将 bicepFile 变量设置为 Bicep 文件的路径。

若要运行此部署 cmdlet,你必须具有 Azure PowerShell 的最新版本

New-AzResourceGroupDeployment `
  -Name addappserviceplan `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $bicepFile `
  -storagePrefix "store" `
  -storageSKU Standard_LRS

注意

如果部署失败,请使用 verbose 开关获取有关正在创建的资源的信息。 使用 debug 开关获取调试的详细信息。

验证部署

可以通过在 Azure 门户中浏览资源组来验证部署。

  1. 登录 Azure 门户
  2. 在左侧菜单中选择“资源组”。
  3. 选择已部署到的资源组。
  4. 该资源组包含一个存储帐户和一个应用服务计划。

清理资源

若要继续学习下一篇教程,则不需删除该资源组。

如果你不打算继续学习,请删除该资源组以清理部署的资源。

  1. 在 Azure 门户上的左侧菜单中选择“资源组” 。
  2. 在“按名称筛选”字段中输入资源组名称。
  3. 选择资源组名称。
  4. 在顶部菜单中选择“删除资源组”。

后续步骤

你已了解如何从 Azure 门户导出 JSON 模板,如何将 JSON 模板转换为 Bicep 文件,以及如何使用导出的模板进行 Bicep 开发。 还可以使用 Azure 快速入门模板来简化 Bicep 开发。