教程:将输出添加到 Azure 资源管理器 Bicep 文件

本教程介绍如何从部署返回值。 需要已部署资源提供的值时,请使用输出。 完成本教程需要 7 分钟

注意

本文包含 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
  }
}

它部署一个存储帐户,但不返回有关该存储帐户的任何信息。 可能需要从新资源捕获属性,以便以后引用它们。

添加输出

可以使用输出,以便从部署返回值。 例如,可以获取新存储帐户的终结点。

以下示例演示为了添加输出值而对 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

关于添加的输出值,有一些重要的值得注意的项。

返回的值的类型设置为 object,这意味着它会返回模板对象。

若要从存储帐户获取 primaryEndpoints 属性,请使用存储帐户符号名称。 Visual Studio Code 的自动完成功能提供了属性的完整列表:

Visual Studio Code Bicep symbolic name object properties

部署 Bicep 文件

现在可以部署 Bicep 文件并查看返回的值了。

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

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

在部署命令的输出中,将会看到类似于以下示例的对象,但前提是输出采用 JSON 格式:

{
  "dfs": "https://storeluktbfkpjjrkm.dfs.core.chinacloudapi.cn/",
  "web": "https://storeluktbfkpjjrkm.z19.web.core.chinacloudapi.cn/",
  "blob": "https://storeluktbfkpjjrkm.blob.core.chinacloudapi.cn/",
  "queue": "https://storeluktbfkpjjrkm.queue.core.chinacloudapi.cn/",
  "table": "https://storeluktbfkpjjrkm.table.core.chinacloudapi.cn/",
  "file": "https://storeluktbfkpjjrkm.file.core.chinacloudapi.cn/"
}

注意

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

回顾所做的工作

我们在已完成的六个教程中做了很多工作。 让我们抽些时间来回顾所做的工作。 你使用易于提供的参数创建了 Bicep 文件。 该 Bicep 文件可以在不同环境中重复使用,因为它允许自定义,并且会动态创建所需值。 它还返回有关存储帐户的信息,这些信息可以用在脚本中。

现在,让我们来看一下资源组和部署历史记录。

  1. 登录 Azure 门户

  2. 在左侧菜单中选择“资源组”。

  3. 选择已部署到的资源组。

  4. 我们会在资源组中有至少一个(也可能有多个)存储帐户,具体取决于所执行的步骤。

  5. 此外还会在历史记录中列出多个成功的部署。 选择该链接。

    Select deployments

  6. 可以在历史记录中看到所有部署。 选择名为 addoutputs 的部署。

    Show deployment history

  7. 可以查看输入。

    Show inputs

  8. 可以查看输出。

    Show outputs

  9. 可以查看 JSON 模板。

    Show template

清理资源

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

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

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

后续步骤

在本教程中,你将返回值添加到了 Bicep 文件。 下一个教程将介绍如何导出 JSON 模板,以及如何在 Bicep 文件中使用该导出的模板的部件。