教程:使用 Azure 快速入门模板进行 Azure 资源管理器 Bicep 开发

Azure 快速入门模板是一个存储库,其中包含社区贡献的 JSON 模板。 可以在 Bicep 开发中使用示例模板。 在本教程中,你将查找网站资源定义,将其反向编译为 Bicep,然后将其添加到 Bicep 文件。 完成该过程需要大约 12 分钟

注意

本文包含 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
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 文件适用于部署存储帐户和应用服务计划,但你可能想要在其中添加网站。 可以使用预生成的模板来快速发现部署资源所需的 JSON。 在 Azure 快速入门模板提供 Bicep 示例之前,你可以使用转换工具将 JSON 模板转换为 Bicep 文件。

查找模板

Azure 快速入门模板目前仅提供 JSON 模板。 可使用一些工具将 JSON 模板反向编译为 Bicep 模板。

  1. 打开 Azure 快速入门模板

  2. 在“搜索”中,输入“部署 linux web 应用”。

  3. 选择标题为“部署基本的 linux web 应用”的磁贴。 如果找不到它,请单击此处的直接链接

  4. 选择“在 GitHub 上浏览”。

  5. 选择“azuredeploy.json”。 这是可供使用的模板。

  6. 选择“原始”,然后创建 URL 的副本。

  7. 浏览到 https://bicepdemo.z22.web.core.chinacloudapi.cn/,选择“反向编译”,然后提供原始模板 URL。

  8. 查看 Bicep 模板。 具体说来,请查找 Microsoft.Web/sites 资源。

    Resource Manager template quickstart web site

    如果你已使用过 JSON 模板,此新资源中有几个重要的 Bicep 功能值得注意。

    在 ARM JSON 模板中,必须手动使用 dependsOn 属性指定资源依赖项。 网站资源依赖于应用服务计划资源。 使用 Bicep 时,如果使用符号名称引用资源的任何属性,则会自动添加 dependsOn 属性。

    可以轻松引用应用服务计划符号名称中的资源 ID (appServicePlanName.id),该 ID 将转换为编译的 JSON 模板中的 resourceId(...) 函数。

修改现有的 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
param appServicePlanName string = 'exampleplan'

@minLength(2)
@description('Base name of the resource such as web app name and app service plan.')
param webAppName string

@description('The Runtime stack of current web app.')
param linuxFxVersion string = 'php|7.0'

var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
var webAppPortalName = '${webAppName}${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
  }
}

resource site 'Microsoft.Web/sites@2020-06-01' = {
  name: webAppPortalName
  location: location
  kind: 'app'
  properties: {
    serverFarmId: appPlan.id
    siteConfig: {
      linuxFxVersion: linuxFxVersion
    }
  }
}

output storageEndpoint object = stg.properties.primaryEndpoints

Web 应用名称必须在 Azure 中独一无二。 为了防止出现重复名称,我们已将 webAppPortalName 变量从 var webAppPortalName_var = '${webAppName}-webapp' 更新为 var webAppPortalName = '${webAppName}${uniqueString(resourceGroup().id)}'

部署 Bicep 文件

使用 Azure CLI 或 Azure PowerShell 来部署 Bicep 模板。

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

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

New-AzResourceGroupDeployment `
  -Name addwebapp `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $bicepFile `
  -storagePrefix "store" `
  -storageSKU Standard_LRS `
  -webAppName demoapp

注意

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

清理资源

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

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

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

后续步骤

你已了解如何使用快速入门模板进行 Bicep 开发。 在下一教程中,我们向资源添加标记。