你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure 开发测试实验室中配置共享映像库

开发测试实验室支持使用 Azure Compute Gallery 存储和共享映像。 使用共享映像库可以轻松维护大量托管映像并使其广泛可用。 它也是为用户提供含当前软件的标准化映像的好方法。 支持专用映像和通用映像。 通过使用共享映像库,可以围绕自定义托管虚拟机 (VM) 映像构建结构和组织。

本文介绍了如何将共享映像库附加到实验室。 创建实验室虚拟机时,用户可以从共享位置访问映像。 此方法的主要优点是开发测试实验室允许跨实验室、跨订阅和跨区域共享虚拟机映像。

浏览共享映像库

将共享映像库与开发测试实验室配合使用的一些好处包括:

  • 管理映像的全局复制
  • 对映像应用版本控制和分组,以便更轻松地进行管理
  • 在支持可用性区域的区域中,使用区域冗余存储 (ZRS) 帐户访问高可用性映像,以便更好地抵御区域故障
  • 使用基于角色的访问控制 (RBAC) 跨订阅和在租户之间共享映像

使用共享库时,请记住以下注意事项:

  • 一次只能将一个共享映像库附加到实验室。 若要附加其他库,必须先分离当前库。
  • 只能通过开发测试实验室从附加的库中选择映像。 无法通过开发测试实验室上传映像或更改库中的映像。
  • 从共享映像创建虚拟机时,开发测试实验室使用附加库中映像的最新已发布版本。 如果映像有多个版本,则在创建虚拟机期间,可以在“高级设置”下选择早期版本。
  • 开发测试实验室尝试将附加库中的所有映像复制到实验室区域。 有时,无法进行复制。 为了避免用户在从映像创建虚拟机时遇到问题,请确保附加库中的映像完全复制到实验室区域。

若要了解与使用共享映像库相关的成本,请参阅 Azure Compute Gallery 的计费

按照以下步骤将共享映像库附加到开发测试实验室资源:

  1. Microsoft Azure 门户中,转到要在其中附加共享映像库的开发测试实验室资源。

  2. 在实验室“概述”页上,展开左侧菜单中的“设置”部分,然后选择“配置和策略”。

  3. 在“配置和策略”屏幕上,展开左侧菜单中的“虚拟机基础映像”部分,然后选择“共享映像库”:

    屏幕截图显示如何为开发测试实验室资源选择共享映像库的“附加”选项。

  4. 选择“附加”,将现有共享映像库添加到实验室。

  5. 在“附加现有库”下拉列表中,选择要添加到实验室的共享映像库,然后选择“确定”:

    屏幕截图显示如何将共享映像库附加到实验室。

  6. 开发测试实验室将库附加到实验室后,可以选择库名称以查看映像的完整列表:

    屏幕截图显示如何查看实验室的附加共享库中所有映像的列表。

    此时会打开“共享映像”页:

    共享库中映像列表的屏幕截图,其中包含用于显示允许创建虚拟机的映像的复选框指示器。

控制可用映像

允许将所有映像都用作虚拟机基础映像”选项允许控制在创建实验室虚拟机时实验室用户可以使用哪些映像。 默认情况下,此选项设置为“”,实验室用户有权访问附加库中的所有映像。

按照以下步骤限制库中映像的访问:

  1. 在实验室的“配置和策略”页上,转到“虚拟机基础映像”>“共享映像库”屏幕。

  2. 选择附加库名称以打开“共享映像”页,其中显示了映像列表。

  3. 在“共享映像”页上,将“允许将所有映像都用作虚拟机基础映像”选项设置为“”。

  4. 对于希望实验室用户不可用的任何映像,请取消选中映像的复选框。

  5. 选择“保存”。

将共享映像库附加到实验室后,实验室用户可以在创建新虚拟机时从允许的映像中进行选择:

  1. 在实验室的“配置和策略”页上,转到“虚拟机基础映像”>“共享映像库”屏幕。

  2. 选择附加库名称以打开“共享映像”页,其中显示了映像列表。

  3. 记下要用于创建新虚拟机的库映像的名称。

  4. 返回到实验室“概述”页,然后选择“添加”。

  5. 在“选择基础映像”页上,选择要用于创建新虚拟机的库映像。 在映像列表中,附加共享映像库中允许的映像遵循 Azure 资源管理器 (ARM) 模板提供的映像:

    屏幕截图显示虚拟机实例的可用映像列表,包括附加共享映像库中的允许映像。

按照步骤从所选映像创建虚拟机。

实验室一次只能有一个附加的共享映像库。 如果实验室具有附加库,并且想要使用其他库,则需要先分离现有库。 分离现有库后,可以附加其他库。

  1. 在实验室的“配置和策略”页上,转到“虚拟机基础映像”>“共享映像库”屏幕。

  2. 选择附加库的“更多选项”(...),然后选择“分离”:

    屏幕截图显示如何从实验室中分离当前共享映像库。

分离”选项也可在附加库的“共享映像”页上使用。

可以使用 ARM 模板将共享映像库附加到实验室。 需要将库添加为 ARM 模板的资源,如以下示例所示:

"resources": [
{
    "apiVersion": "2018-10-15-preview",
    "type": "Microsoft.DevTestLab/labs",
    "name": "mylab",
    "location": "eastus",
    "resources": [
    {
        "apiVersion":"2018-10-15-preview",
        "name":"myGallery",
        "type":"sharedGalleries",
        "properties": {
            "galleryId":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/mySharedGalleryRg/providers/Microsoft.Compute/galleries/mySharedGallery",
            "allowAllImages": "Enabled"
        }
    }
    ]
}

开发测试实验室 GitHub 存储库提供了使用 ARM 模板附加共享映像库的完整示例。 若要开始,可以在创建新的实验室时配置共享映像库

使用 REST API

以下部分提供了有关如何使用 REST API 处理共享映像库中的映像的示例。

获取实验室列表

以下 GET 调用会返回订阅的开发测试实验室资源列表。 在此示例中,提供以下参数:

  • subscriptionId:要为其返回开发测试实验室资源的列表的订阅 ID。
  • resourceGroupName:要搜索开发测试实验室资源的资源组的名称。
GET  https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs?api-version= 2018-10-15-preview

获取实验室的共享映像库列表

以下 GET 调用会返回与实验室关联的共享映像库的列表。 在此示例中,提供以下参数:

  • subscriptionId:开发测试实验室资源的订阅 ID。
  • resourceGroupName:开发测试实验室资源的资源组的名称。
  • labName:要为其返回关联的共享映像库列表的开发测试实验室资源的名称。
GET  https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/sharedgalleries?api-version= 2018-10-15-preview

以下 PUT 调用会为指定的实验室创建或更新共享映像库。 在此示例中,提供以下参数:

  • subscriptionId:开发测试实验室资源的订阅 ID。
  • resourceGroupName:开发测试实验室资源的资源组的名称。
  • labName:开发测试实验室资源的名称。
  • name:要为实验室创建或更新的共享库的名称。
  • galleryId:要为实验室创建或更新的共享库的 ID。
  • allowAllImages:设置为 Enabled,以允许库中的所有映像与实验室资源一起使用。
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/sharedgalleries/{name}?api-version=2018-10-15-preview
Body: 
{
    "properties":{
        "galleryId": "[Shared Image Gallery resource Id]",
        "allowAllImages": "Enabled"
    }
}

以下 GET 调用会返回实验室的指定共享映像库中的映像列表。 在此示例中,提供以下参数:

  • subscriptionId:开发测试实验室资源的订阅 ID。
  • resourceGroupName:开发测试实验室资源的资源组的名称。
  • labName:开发测试实验室资源的名称。
  • name:与要列出映像的实验室关联的共享库的名称。
GET  https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/sharedgalleries/{name}/sharedimages?api-version=2018-10-15-preview