快速入门:使用 Microsoft Graph 资源创建和部署第一个 Bicep 文件

在本快速入门中,你将创建一个 Bicep 文件,该文件声明Microsoft Entra 安全组和托管服务标识(MSI),分别表示Microsoft Graph 资源和 Azure 资源。 然后,将 MSI 添加为组的所有者。 你还将了解 Bicep 扩展如何通过提供类型安全性、语法验证和自动完成来简化开发。 最后,使用已登录用户部署 Bicep 文件。

重要

本快速入门文章使用动态类型引用,而不是弃用的内置类型,将于 2025 年 1 月 24 日停用。 在停用日期之前,内置类型(由 extension microsoftGraph其表示)将与新的动态类型共存。 如果任何现有 Bicep 文件都使用内置类型, 请切换到使用动态类型 以避免将来出现任何 Bicep 文件部署问题。

重要

Microsoft Graph Bicep 目前为预览版。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

先决条件

添加 Microsoft Graph 应用程序组

启动 VS Code 并在同一文件夹中创建两个新文件 main.bicep bicepconfig.json

接下来,若要能够在 Bicep 文件中声明 Microsoft Graph 资源,需要通过配置 bicepconfig.json来启用 Bicep 预览功能并指定 Microsoft Graph Bicep 类型版本。

此示例使用 v1.0 资源并声明用户友好的扩展名称“microsoftGraphV1_0”来引用br:mcr.microsoft.com/bicep/extensions/microsoftgraph/v1.0:0.1.8-previewMicrosoft 工件注册表中的类型版本。

{
    "experimentalFeaturesEnabled": {
        "extensibility": true
    },
    // specify an alias for the version of the v1.0 dynamic types package you want to use
    "extensions": {
      "microsoftGraphV1_0": "br:mcr.microsoft.com/bicep/extensions/microsoftgraph/v1.0:0.1.8-preview"
    }
}

还可以在同一 Bicep 文件中声明 Microsoft graph 资源,方法是从Microsoft 工件注册表添加对 beta 类型版本的另一个引用。

main.bicep 中,键入microsoftGraphV1_0extension microsoftGraphV1_0用于引用Microsoft 工件注册表中的动态类型包的用户友好名称。 该extension语句使 Bicep 编译器知道你正在包括bicepconfig.json中定义的Microsoft图形类型。 在下一行中,使用 resource 关键字定义资源。 键入 resource exampleGroup 并添加空格。

extension microsoftGraphV1_0

resource exampleGroup

在该符号名称的后面添加空格时,会显示资源类型的列表。 继续键入 ,直到可以从可用选项中选择 Microsoft.Graph/Groups

选择资源类型的Microsoft图形组的屏幕截图。

提示

如果未在 VS Code 中看到 Intellisense 选项,请确保已安装先决条件中指定的 Bicep 扩展。 如果已安装该扩展,请在打开 Bicep 文件后给 Bicep 语言服务一些时间来启动。 右下角的通知指示服务正在启动。 当该通知消失时,服务正在运行。

选择 Microsoft.Graph/Groups 后,会显示可用的 API 版本 - beta 或 v1.0。 始终选择 v1.0,除非它不可用,或者所需的资源属性仅在 beta 版中可用。 对于本快速入门,请使用 v1.0。

屏幕截图显示如何选择资源类型的 API 版本。

在资源类型的单引号后面,添加 = 和一个空格。 你将看到用于为资源添加属性的选项。 选择“required-properties”。

屏幕截图显示如何添加所需属性。

此选项用于添加在部署时所需的所有资源类型属性。 选择此选项后,组具有以下属性:

resource exampleGroup 'Microsoft.Graph/groups@v1.0' = {
  displayName: 
  mailEnabled: 
  mailNickname: 
  securityEnabled: 
  uniqueName: 
}

为这些属性提供值,将 mailEnabled 设置为 false securityEnabled。true uniqueName 表示此组资源的不可变客户端提供的密钥。

添加托管标识资源

使用 Bicep 扩展的 VS Code 通过提供预定义的代码片段(例如创建托管标识的代码片段)简化了开发。 在 main.bicep 中,键入 man,然后从列表中选择 res-managed-identity,然后按 [TAB] 或 [ENTER]。

添加资源片段的屏幕截图。

注意:当前不支持可扩展资源(如 Microsoft Graph 资源)的资源片段

Bicep 文件现在包含以下代码:

resource managedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2018-11-30' = {
  name: 'name'
  location: location
}

可以通过添加参数定义来location修复缺少的参数定义错误。 在扩展定义下,添加 param location string = resourceGroup().location。 有关此处使用的函数的详细信息,请参阅 resourceGroup()。 将托管标识的名称从 name .exampleManagedIdentity

使托管标识成为组资源的所有者

在资源中 exampleGroup ,创建一个新行 uniqueName,键入 ow,其中显示 所有者 是唯一匹配的属性选项,然后按 [TAB] 或 [ENTER]。

添加所有者属性的屏幕截图。

owners 属性是一个数组,因此[],通过键入 m 并选取 managedIdentity(托管标识的符号名称),键入属性并选取属性,键入另一个属性并选取 principalId,然后引用托管标识的主体 ID。

引用托管标识的屏幕截图。

main.bicep 文件现在应如下所示:

extension microsoftGraphV1_0

param location string = resourceGroup().location

resource exampleGroup 'Microsoft.Graph/groups@v1.0' = {
  displayName: 'My example group'
  mailEnabled: false
  mailNickname: 'my-example-group'
  securityEnabled: true
  uniqueName: 'myExampleGroup'
  owners: [managedIdentity.properties.principalId]
}

resource managedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2018-11-30' = {
  name: 'exampleManagedIdentity'
  location: location
}

使用已登录用户部署 Bicep 文件

使用以下示例登录到 Azure CLI 或 Azure PowerShell 来部署 Bicep 文件。 本文档中的 Azure CLI 示例使用 Bash 控制台。

## Sign in to Azure CLI
az login

## Create a resource group
az group create --name exampleRG --location eastus

## Deploy the Bicep file
az deployment group create --resource-group exampleRG --template-file main.bicep

部署完成后,应会看到一条指出部署成功的消息。

注意

由于复制延迟,将托管服务标识(MSI)添加为 Microsoft Entra 组的所有者可能会导致部署失败。 稍候一下,然后再次部署相同的 Bicep 文件。

清理资源

如果不再需要本文中创建的 Azure 资源,请使用 Azure CLI 或 Azure PowerShell 模块删除快速入门资源组。

注意

资源组是 Azure 概念,对 Microsoft Graph 资源没有影响。 需要清理 Microsoft Graph 资源,并发出Microsoft Graph 的其他请求。 为此,可以使用 Azure CLI 或 Azure PowerShell、 Microsoft Graph CLIMicrosoft Graph PowerShell

以下示例演示了先删除 Azure 资源的命令,然后使用 Azure CLI 和 Azure PowerShell 删除 Microsoft Graph 资源。

## Delete the resource group
az group delete --name exampleRG

## Delete the Microsoft Graph group
az rest --method delete --url 'https://graph.microsoft.com/v1.0/groups%28uniqueName=%27myExampleGroup%27%29'

下一步