更新解决方案模板以使用新的 CreateUiDefinition 更改

本文介绍如何为即将推出的 Azure Stack Hub 更新及其对 CreateUiDefinition.json 的更改做准备。 此 JSON 文件用于在部署解决方案模板时创建用户体验。

CreateUiDefinition 问题说明

CreateUiDefinition.json 将更新以适应即将发布的版本中的 UI 更改。 在部署解决方案模板时,这些更改可提供更完整的用户体验。 有关新体验的详细信息,请参阅 CreateUiDefinition 概述

但是,我们注意到某些解决方案模板无法使用 UI 的新更改的问题,除非模板更新。 为了确保中断降到最低,我们介绍了一系列可用于确保所有项目都与最新更新兼容的步骤。 下图对旧体验(下)和新体验(上)进行了并排比较。

新建:

CreateUIDefinition1

旧体验:

CreateUIDefinition part 2

验证步骤

第一步是确定 Azure Stack Hub 市场上的哪些解决方案模板需要更新。 以下 JavaScript 片段可帮助你查找可能需要验证的不同项。

在登录到管理门户的 Web 控制台中运行脚本。 通常可以在 Web 浏览器的开发工具中找到控制台(可能因浏览器而异)。 控制台打开后,将以下脚本复制粘贴到控制台中,然后点击 Enter。 输出是 Azure Stack Hub 市场中与新的 CreateUiDefinition 格式不兼容的解决方案模板列表:

uri = "/providers/Microsoft.Gallery/GalleryItems?api-version=2015-04-01"
let galleryItemsResult = await MsPortalFx.Base.Net2.ajax({uri: uri, useFxArmEndpoint: true});
const result = [];
console.log("Checking....");
for (let i=0;i<galleryItemsResult.length;i++) {
   const v = galleryItemsResult[i];
   const uidef = await MsPortalFx.Base.Net2.ajax({uri: v.uiDefinitionUri, useRawAjax: true});   
   const createBlade = uidef.createDefinition.createBlade;
   if (createBlade.name === "CreateMultiVmWizardBlade" && createBlade.extension === "Microsoft_Azure_Compute") {
       result.push(v);
   }
}
if (result.length === 0) {
    console.log("\n\n You don't have to update any item :)");
} else {
    console.log("\n\nThese items need to be updated:");
    result.forEach((v)=>{
        console.log(v.itemDisplayName);
    });
}

对于不兼容的解决方案模板列表,根据下面的图表确定后续步骤:

Flow chart for UI definition

如果通过市场管理下载解决方案模板,请将模板更新到最新版本。 市场管理中的解决方案模板将在未来几个月更新,因此请留意市场你的项目的最新版本。

但是,如果你的解决方案模板不是来自市场管理,或者它是内部创建的自定义模板,可能需要采取额外的步骤来确保与即将推出的 create UI 兼容。 在发布新的 CreateUiDefinition 体验之前(未来几个月的某个时间)需要完成以下步骤,以确保你的自定义解决方案模板适应新的 UX。

首先,获取解决方案模板的 AZPKG 文件。 解压模板的 .AZPKG 文件后,请按照以下步骤更新解决方案模板。

步骤 1:修改 UIDefinition.json 文件

  1. 将架构更改为以下代码:

    "$schema": "https://gallery.azure.com/schemas/2018-02-12/UIDefinition.json#",
    
  2. 将 create blade 部分更改为以下代码:

    "createBlade": {
          "name": "CreateUIDefinitionBlade",
          "extension": "Microsoft_Azure_CreateUIDef"
    },
    

步骤 2:修改 CreateUiDefinition.json

  1. 将架构、处理程序和版本更改为以下代码:

    "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
    "handler": "Microsoft.Azure.CreateUIDef",
    "version": "0.1.2-preview",
    
  2. 转到 https://<your portal uri>/#blade/Microsoft_Azure_CreateUIDef/SandboxBlade,并按照说明测试修改后的 CreateUiDefinition.json 内容。 解决沙盒边栏选项卡报告的任何问题。

步骤 3:更新 Manifest.json 并创建新的 AZPKG

  1. 将 Manifest.json 文件中的 version 属性更新为较新版本,以允许发布更新后的模板。

  2. 最后一步是使用库包生成工具创建新的 AZPKG,并在 PowerShell 中运行包生成工具命令,如下所示:

    AzureStackHubGallery.exe package -m <azpkg file\manifest.json> -o <outfile path>
    

    此命令从包含上述不同文件的文件中创建一个新的 AZPKG。 然后可以使用此 AZPKG 将新的解决方案模板发布到市场上。

后续步骤