将 Azure 蓝图 迁移到模板规范

Azure 蓝图(预览版)将于 2027 年 1 月 31 日停用。 本文介绍如何将蓝图定义和项目迁移到模板规格中,以及如何使用Azure部署堆栈部署蓝图定义和项目,以便保留版本控制和拒绝分配保护。 有关完整的分阶段时间表,请参阅Azure 蓝图 的停用

模板规格是一种资源类型(Microsoft.Resources/templateSpecs),用于将 ARM 模板或Bicep文件存储在Azure环境中,以便可以在组织中对其进行版本控制和共享。 模板规范取代了蓝图定义所提供的工件存储和版本控制作用。 部署堆栈取代了蓝图分配所提供的 分配、生命周期和锁定 作用。

先决条件

  • Azure CLI或Azure PowerShell。
  • 具有读取现有蓝图定义以及在目标范围内(订阅或管理组)创建模板规范和部署堆栈的权限。
  • 如果需要配置拒绝设置,则必须在目标范围内具有“所有者”或“用户访问管理员”角色。

迁移步骤

  1. 导出蓝图定义。 将每个蓝图定义及其构件(包括 Azure Policy 分配、角色分配和 ARM 模板)导出为 JSON。 有关详细信息,请参阅“导出蓝图定义”

    导出要在 2027 年 1 月 31 日之前保留的所有内容。 停用后,将删除未导出的定义、版本和分配。

  2. 将导出的项目转换为单个模板。 将导出的 JSON 转换为单个 ARM 模板或Bicep文件。 将每个蓝图项目映射到其等效的 ARM 资源:

    蓝图产物 ARM/Bicep等效项
    策略分配 Microsoft.Authorization/policyAssignments
    角色分配 Microsoft.Authorization/roleAssignments
    ARM 模板 模块、嵌套模板或链接模板
    资源组 Microsoft.Resources/resourceGroups

    在 Bicep 文件中,将适当的 targetScope(例如,subscription)设置为与你的蓝图所分配到的作用域一致。

  3. 将模板发布为模板规格。 从转换后的模板创建模板规格。 模板规格将模板和版本存储在Azure中。 有关详细信息,请参阅 Azure 资源管理器模板规格

    使用 Azure CLI:

    az ts create \
      --name blueprint-migration \
      --version 1.0.0 \
      --resource-group myResourceGroup \
      --location chinanorth3 \
      --template-file ./main.bicep
    

    使用 Azure PowerShell:

    New-AzTemplateSpec `
      -Name blueprint-migration `
      -Version 1.0.0 `
      -ResourceGroupName myResourceGroup `
      -Location chinanorth3 `
      -TemplateFile ./main.bicep
    
  4. 使用部署堆栈部署模板规格。 通过部署堆栈部署模板规格,以便获得与蓝图锁等效的生命周期管理和拒绝分配保护。 通过其资源 ID 引用模板规范。 (--deny-settings-modeDenySettingsMode) 设置重现蓝图锁定行为(denyDelete类似于“请勿删除”;denyWriteAndDelete类似于“只读”)。 有关详细信息,请参阅防止托管资源被删除

    使用 Azure CLI:

    az stack sub create \
      --name blueprint-migration-stack \
      --location chinanorth3 \
      --template-spec "/subscriptions/<subscriptionId>/resourceGroups/myResourceGroup/providers/Microsoft.Resources/templateSpecs/blueprint-migration/versions/1.0.0" \
      --deny-settings-mode denyDelete \
      --action-on-unmanage deleteResources
    

    使用 Azure PowerShell:

    New-AzSubscriptionDeploymentStack `
      -Name blueprint-migration-stack `
      -Location chinanorth3 `
      -TemplateSpecId "/subscriptions/<subscriptionId>/resourceGroups/myResourceGroup/providers/Microsoft.Resources/templateSpecs/blueprint-migration/versions/1.0.0" `
      -DenySettingsMode DenyDelete `
      -ActionOnUnmanage DeleteResources
    
  5. 验证并停用蓝图。

    1. 确认部署堆栈创建了预期的资源,并应用了拒绝设置。
    2. 确认策略和角色分配已在目标范围内配置到位。
    3. 验证完成后,请删除原始蓝图分配和定义(如果尚未导出,请先导出)。

何时改用 Git 存储库

如果你的优先级是源代码管理和拉取请求评审,而不是将模板存储在Azure中,则可以将转换后的Bicep文件保留在 Git 存储库中,并使用部署堆栈直接从管道部署它们。 模板规格和 Git 存储库都提供版本控制 - 选择模板规格以在Azure和 Git 中共享模板,以将其作为代码进行管理。

后续步骤