Azure Stack Hub 市场解决方案——设计、发布与运营

📅 2026/7/24 18:12:45
Azure Stack Hub 市场解决方案——设计、发布与运营
未经同意请勿转载作者徐火军Dell Principal Engineer基线参考 Azure Stack Hubazs-2604文档体系本文维护日期 2026 年 7 月系列下篇设计与发布视角← 上篇运营视角同步、下载与离线交付§1 引言从市场项到生产可用上篇《Azure Stack Hub 市场全景——同步、下载与离线交付》从运营视角梳理了市场的全景Azure 市场与 Azure Stack Hub 市场的本质区别市场同步机制的工作原理已连接场景与离线场景下市场项的下载流程Marketplace 安全与供应链治理本篇切换到设计与发布视角目标读者是ISV、企业架构师、集成商技术负责人——也就是要把自己的软件 / 镜像 / 模板交付到 Azure Stack Hub 市场的开发者。本篇要回答的核心问题5 种 Marketplace Item 类型Images / Extensions / Resource Providers / ARM Templates / Existing Solutions的设计模式有什么区别平台镜像仓库PIR与来宾虚拟机制品库GAR的关系是什么管理员镜像与用户镜像的工作流为什么不同自定义 Gallery Item 的发布流程.azpkg Add-AzsGalleryItem怎么走ARM 模板 API 配置档案如何实现跨云部署Windows Server 镜像的 PAYG vs BYOL 选型怎么决策对于接触过 Azure 的读者本篇会强调 Azure Stack Hub 与 Azure 的关键差异点——避免把 Azure 的开发经验直接搬到 Azure Stack Hub 上踩坑。§2 什么是市场解决方案§2.1 Azure 内容来自 Azure Marketplace 的内容Azure 内容是指通过 Azure Marketplace 发布并同步到 Azure Stack Hub 的市场内容。发布方可以是Microsoft第一方—— 例如 SQL Server on Windows Server、Microsoft Monitoring Agent 等ISV独立软件供应商—— 例如 Red Hat、Canonical、SuSE、NVIDIA、Dell、F5 等其他软件供应商—— 任何通过 Azure Marketplace 认证流程的发布者关键原则发布者负责其内容的生命周期管理与技术支持——无论内容来自第一方还是 ISV。§2.2 自定义内容用户设计与支持自定义内容是指由Azure Stack Hub 管理员 / 企业用户设计与支持的市场内容在操作系统镜像和第一方或第三方软件上提供平台或服务的完整解决方案基于多镜像或单镜像由用户设计和支持使用本地 Azure 资源管理器ARM工具构建典型例子企业内部标准镜像、企业开发的 ARM 模板、企业专用扩展。§2.3 两类内容的对比维度Azure 内容来自 Azure Marketplace自定义内容用户设计方Microsoft / ISV / 其他供应商企业用户 / 管理员支持方发布者企业 IT 团队来源Azure 市场 → 同步本地构建 Add-AzsGalleryItem适用场景标准软件交付企业内部标准化交付生命周期由发布者主导由企业 IT 团队主导计费发布者定价 / Azure 订阅扣费企业内部核算§2.4 单镜像 vs 多镜像方案的选型维度单镜像多镜像架构一个 VM 镜像含全部组件多个 VM 镜像 ARM 模板组合部署复杂度低一次创建 VM 即可中需要 ARM 模板编排运维复杂度中升级需重新部署 VM高多个组件分别升级适用场景单一应用如 Microsoft SQL Server Image多层架构如 Web DB Cache典型例子SQL Server 单机镜像三层 Web 应用方案选型建议单一应用、运维简单 → 单镜像多层架构、需要组件解耦 → 多镜像 ARM Template需要横向扩展 → 多镜像 ARM Template按需扩容单个组件§3 Marketplace Item 类型全景Azure Stack Hub 中的 Marketplace Item 微软公开分类通常包含5 种类型共同构成市场内容的对象集合。Marketplace Item ├── Images ├── Extensions ├── Resource Providers ├── ARM Templates └── Existing Solutions类型用途责任方ImagesVM 启动介质 预装软件Microsoft / ISV / 企业ExtensionsVM 部署后配置与自动化Microsoft / ISVResource Providers提供新的 PaaS 服务资源类型MicrosoftARM Templates资源编排与批量部署ISV / 企业Existing Solutions多组件组合的完整方案ISV理解要点Images 和 Extensions 是直接面向 VM的两类前者决定 VM 用什么 OS后者决定 VM 装什么扩展Resource Providers 是面向 PaaS 服务的部署后出现新的 ARM 资源类型ARM Templates 是部署技术既可以独立存在也可以作为 Existing Solutions 的底层实现Existing Solutions 是组合类型通常包含上述多种组件§4 平台镜像仓库PIR与来宾虚拟机制品库GAR这是 Azure Stack Hub 上两个最容易混淆的核心概念。§4.1 PIRPlatform Image Repository平台镜像仓库定义维护供租户在部署新虚拟机时使用的镜像列表。职责使管理员能够向租户提供VM 镜像如 Ubuntu、Windows Server、自定义镜像可以被ARM 模板通过 Image Reference 引用也可以添加到 Azure Stack Hub 的 Azure 市场中成为可被租户发现的市场项存储位置Azure Stack Hub 内部存储与 VM 数据存储分离支持的镜像格式VHD固定大小—— Azure Stack Hub Marketplace Image 不支持直接上传 VHDX必须使用 VHD 格式。§4.2 GARGuest Artifact Repository来宾虚拟机制品库定义用于保存 VM Extension 所需的扩展工件Artifacts包括扩展包、脚本及相关依赖文件。职责存储VM 扩展如 Custom Script Extension、监控扩展、杀毒扩展由 Azure Stack Hub 平台在扩展部署过程中自动分发至 Guest Agent扩展生命周期通常随 VM 生命周期结束存储位置Azure Stack Hub 内部存储§4.3 PIR vs GAR 的本质区别维度PIRGAR内容VM 启动镜像OS 预装软件扩展工件Artifacts使用时机部署阶段引用 Image ReferenceVM 创建时或创建后挂载存储格式VHD固定大小.zip / .msi / .tar.gz按扩展类型引用方式ARM 模板通过 Image Reference 引用平台镜像ARM 模板 / 门户 / PowerShell 挂载生命周期静态创建后不变动态与 VM 生命周期关联关键关系PIR 是 VM 的出生证明决定 VM 用什么系统GAR 是 VM 的后天能力决定 VM 装什么扩展。§4.4 PIR 工作流程VHD上传至 Azure Storage Blob Container │ ▼ 管理员添加至 PIR │ ▼ ARM 模板 Image Reference 引用平台镜像 │ ▼ 部署阶段创建 VM │ ▼ VM 启动 → OS§4.5 GAR 工作流程Extension Package / Script / 依赖文件打包 │ ▼ Azure Stack Hub Marketplace Service 存储至 GAR │ ▼ ARM 模板 / Portal / PowerShell 触发扩展部署 │ ▼ Azure Stack Hub 平台将扩展分发至 Guest Agent │ ▼ Guest Agent 在 Guest OS 内安装§4.6 ARM 模板引用 PIR / GAR 的方式ARM 模板通过imageReference引用 PIR 中的镜像{ resources: [ { type: Microsoft.Compute/virtualMachines, properties: { storageProfile: { imageReference: { publisher: Canonical, offer: UbuntuServer, sku: 18.04-LTS, version: latest } } } } ] }ARM 模板通过extensions子资源引用 GAR 中的扩展工件{ resources: [ { type: Microsoft.Compute/virtualMachines/extensions, properties: { publisher: Microsoft.Compute, type: CustomScriptExtension, typeHandlerVersion: 1.9, settings: { commandToExecute: apt-get update apt-get install -y nginx } } } ] }§5 镜像Images管理员路径§5.1 添加镜像的典型场景需要通过管理员添加镜像的典型场景提供商业可用的镜像以增强租户体验如 Ubuntu、Windows Server、CentOS 等基础镜像提供内部制作的自定义镜像供租户使用企业内部标准化提供目前在 Azure 市场中暂无的镜像或解决方案填补市场空白§5.2 添加镜像的 5 步流程第 1 步上传 VHD 至 Azure Storage Blob Container将镜像 VHD 上传至 Azure Stack Hub 存储的 Blob Container并保存 VHD 的 URL 路径。# 创建容器 $container New-AzStorageContainer -Name vhds -Context $ctx # 上传 VHD Set-AzStorageBlobContent -Container vhds -File D:\images\ubuntu-20.04.vhd第 2 步登录管理员门户打开 Azure Stack Hub 管理员门户https://adminmanagement.local.azurestack.external使用管理员用户账户登录。第 3 步进入镜像管理单击区域管理选择计算选择虚拟机镜像单击添加第 4 步填写镜像元数据填写镜像的相关区域名称、发布者、版本、OS 类型等并指定前面复制的 VHD 映像路径作为 OS 磁盘 URI。第 5 步完成创建系统会在后台创建镜像并在 PIR 中创建 VHD 的副本确保镜像独立于原始 Blob 的生命周期。§5.3 Blob 容器 VHD URL 的工作机制阶段存储位置备注上传阶段Azure Storage Blob Container 中的 VHD用户上传的源文件镜像创建后PIR 中的 VHD 副本独立副本与原始 Blob 解耦部署 VM 时VM 数据磁盘ARM 模板 Image Reference 引用 PIR 中的 VHD关键点原始 Blob 中的 VHD 在镜像创建后可以删除——PIR 中已有副本VM 部署时只引用 PIR 副本。L3 最佳实践建议在确认镜像状态为Succeeded并完成至少一次成功部署验证后再删除源 VHD。避免企业客户因提前删除导致回滚困难。§5.4 商用 / 自定义 / 市场暂无镜像的差异化处理场景镜像来源处理方式商用镜像Ubuntu / CentOS 官方下载下载 → 上传至 Blob Container → 添加到 PIR自定义镜像企业内部封装制作 VHD → 上传 Blob Container → 添加到 PIR市场暂无ISV 提供或自研获取 VHD → 上传 Blob Container → 添加到 PIRAzure 市场已有Azure 市场同步通过市场联合工具下载详见上篇§6 镜像Images用户路径管理员镜像和用户镜像的工作流完全不同。管理员是集中化运营租户是自助式使用。§6.1 用户添加镜像的 6 步流程第 1 步登录用户门户打开 Azure Stack Hub 用户门户使用用户账户登录。第 2 步创建存储账户创建一个新的存储账户如果已有可跳过。第 3 步创建容器为这个账户创建一个新的 Blob 容器。第 4 步生成 SAS 令牌为这个容器创建一个新的 SAS共享访问签名令牌并复制 SAS 链接。# 生成 SAS 令牌 $sasToken New-AzStorageContainerSASToken -Container vhds -Context $ctx -Permission rwl -ExpiryTime (Get-Date).AddDays(7)第 5 步上传 VHD使用AzCopy将下载的 VHD 上传至新创建的容器。# AzCopy 上传实际命令以 AzCopy 版本为准 azcopy copy D:\images\ubuntu-20.04.vhd sas-link?sas-token第 6 步在用户门户创建镜像在用户门户进入Compute → Images不同版本门户菜单可能略有区别创建一个新的镜像填写相关区域并选择之前上传的 VHD 创建映像完成后用户即可使用该镜像创建虚拟机。§6.2 SAS 令牌的工作机制与最小权限原则SASShared Access Signature是一种受限授权机制用户生成有时间限制的 SAS 令牌该令牌只授予对特定 Blob 容器的特定权限不需要暴露存储账户密钥给 AzCopy最小权限建议按场景分配操作所需权限上传 VHD 至容器Create Write List验证上传内容Read完全不需要访问不分配任何权限L3 最佳实践令牌过期时间应最小化完成上传所需时间 缓冲令牌应只授予必要的权限按上表分场景分配上传完成后立即撤销令牌根据上传方式分配最小权限Create / Write / List需要验证时再增加 Read§6.3 AzCopy 实战配置# 1. 下载 AzCopy与 AzCopy 版本对应的 URL 以微软官方文档为准 # 一般从 aka.ms/AzCopy 下载 # 2. 上传 VHD azcopy copy local-file-path\image.vhd https://storage-account.blob.azurestack-domain/container/blob-name?sas-token --blob-type PageBlob注意VHD 必须以PageBlob形式上传不是 BlockBlob。这是 VM 镜像的特殊要求。§6.4 用户镜像 vs 管理员镜像的责任边界维度管理员镜像用户镜像添加路径管理员门户 / PowerShell用户门户 / AzCopy PowerShell权限要求管理员角色存储账户 镜像创建权限可见范围全租户创建者本人 / 授权用户生命周期与 Azure Stack Hub 实例绑定与用户账户绑定删除影响影响所有租户仅影响创建者最佳实践商用镜像 / 标准化镜像→ 管理员路径个人测试 / 临时使用→ 用户路径企业内部标准化镜像→ 推荐管理员路径统一管控§7 添加镜像到市场§7.1 两条路径可以通过管理员门户或Windows PowerShell将 VM 映像添加到 Azure Stack Hub 市场。可以通过两种选项使映像可供用户使用选项访问方式在市场中可见适用场景仅 ARM 可访问Azure 资源管理器模板不可见程序化部署、不需要 UI 入口通过市场提供管理员门户 ARM 模板可见租户自助发现 部署§7.2 通过管理员门户添加镜像的 RBAC 链路关键点添加镜像到市场本身不会自动把该镜像开放给租户。完整链路管理员上传镜像→ 进入 PIR管理员创建 Offer / Plan→ 把镜像纳入治理租户订阅 Offer / Plan→ 获得镜像访问权限租户在门户中看到→ 部署 VM§7.3 创建市场套餐的实战在管理员门户中进入租户管理 → 套餐单击添加 → 输入套餐名称、订阅者等基本信息在计划中创建或选择计划在计划中添加服务配额在服务中选择计算→ 选择要发布的镜像保存套餐§7.4 镜像在市场中不可见的常见原因现象原因排查租户门户看不到未创建 Offer / Plan在管理员门户创建包含该镜像的 Offer看到了但部署失败镜像元数据错误检查 publisher / offer / sku / version部署失败认证RBAC 权限不足确认租户订阅了正确的 Offer / Plan部署失败容量配额超限检查 Plan 配额设置§8 虚拟机扩展程序Extensions§8.1 VM 扩展的定义与典型场景VM 扩展是部署后配置和自动化虚拟机的小程序。典型场景虚拟机部署后的软件安装防病毒保护Docker 配置监控 Agent 部署密钥管理Azure Key Vault 集成§8.2 5 类用途类别典型扩展用途监控Azure Monitor AgentAMAbr/或当前 Azure Stack Hub 版本支持的监控扩展上报 VM 性能 / 日志到 Log Analytics服务Custom Script Extension部署后自动执行 PowerShell / Bash补救Desired State Configuration (DSC)配置漂移修正杀毒 / 恶意软件Microsoft AntimalwareWindows Defender 集成其他Backup Extension、Container Monitoring 等各 ISV 提供注监控扩展的可用性与 Azure Stack Hub 版本相关——具体可用的监控扩展以当期文档为准。在较老的 Azure Stack Hub 版本上可能仍存在 Microsoft Monitoring Agent (MMA)新版本逐步迁移到 Azure Monitor Agent (AMA)。§8.3 扩展的运行机制Azure CLI / PowerShell / ARM / 门户VM 扩展可以通过以下方式运行Azure CLIaz vm extension setPowerShellSet-AzVMExtensionAzure 资源管理器ARM模板Azure 门户创建 VM 时配置扩展关键特点可以与新的虚拟机部署捆绑在一起也可以在任何现有 VM上运行。§8.4 Azure Stack Hub 上扩展的特殊性在 Azure Stack Hub 中虚拟机扩展程序与映像的处理方式一致都通过 Azure Stack Hub 市场分发都由 Marketplace Service 管理都受相同的 RBAC / Offer / Plan 治理L0 版本事实扩展的可用性与 Azure Stack Hub 版本相关具体可用的扩展以当期文档为准。§8.5 扩展的生命周期扩展生命周期通常随 VM 生命周期结束——具体表现为部署阶段Azure Stack Hub 平台将扩展分发至 Guest Agent运行阶段扩展在 Guest OS 内持续运行持续型或执行单次任务后退出任务型VM 删除扩展随 VM 一同销毁除非显式保留扩展升级通过更新扩展版本号触发§8.6 扩展与镜像的本质区别维度镜像Image扩展Extension生命周期创建时一次性决定任何时候可挂载 / 卸载作用范围OS 本身在 OS 内运行的扩展进程升级方式重新部署 VM更新扩展版本存储位置PIRGAR典型用途提供基础环境提供运行时能力§9 资源提供程序RP§9.1 RP 的工作原理架构视角Tenant │ ▼ ARM │ ▼ Resource Provider部署后运行 │ ▼ Backend ServicePaaS 服务实例租户通过 ARM 调用新的资源类型 → ARM 路由到 RP → RP 创建后端服务实例。§9.2 RP 模式 vs 每次自定义部署传统部署每次自定义每个 PaaS 服务的部署方式不同需要大量配置工作与其他解决方案类型不一致RP 模式新的 PaaS 服务使用该模式提供一致的部署方法vs 每次不同的部署方法更少的配置工作与其他解决方案类型一致§9.3 RP 的前置条件部署 RP 前需要完成安装最新版本的 Azure Stack Hub Tools完成市场同步下载 RP 安装包根据 RP 的要求下载资源提供程序和依赖包更新 Azure AD 主目录以注册新的应用程序以上步骤只需要为所有 RP 做一次后续部署其他 RP 时可复用基础设施。§9.4 部署 RP 的 5 步流程下载 RP 安装包—— 通过市场联合工具从 Azure 市场下载运行安装脚本—— 在管理节点执行部署脚本验证 RP 健康状态—— 通过管理员门户或 PowerShell 检查创建 RP 资源类型—— 部署成功后Azure Stack Hub 集群出现新的 ARM 资源类型向租户发布—— 把 RP 加入 Offer / Plan§9.5 目前采用市场部署的 RP按微软公开文档下列 RP 通过市场部署具体支持情况以对应 Azure Stack Hub 版本文档为准Event Hubs Resource Provider事件中心IoT Hub Resource Provider物联网中心SQL Resource Provider提供 Database as a ServiceApp Service Resource Provider应用托管其他 RP 的可用性与生命周期变化以当期官方文档为准。§9.6 RP 容量影响部署 RP 会消耗 Azure Stack Hub 的基础设施资源计算资源RP 自身的后台服务运行存储资源RP 元数据 日志网络资源RP 服务端口 内部通信具体消耗取决于 RP 类型和租户规模——L3 建议在部署 RP 前参考当期官方文档的容量要求并在容量规划中预留相应资源。§10 自定义市场项.azpkg 与 Gallery Packager§10.1 Gallery Item 的组成Gallery Item 是管理员在 Azure Stack Hub 市场中可管理的内容单元由以下部分组成Gallery Item ├── UI门户展示 ├── Metadata元数据 ├── ARM Template部署逻辑 └── Icon图标关键点Gallery Item不是Marketplace Item Type 的一种而是 Marketplace Item 在门户层的包装形式——管理员通过 PowerShellGet-AzsGalleryItem可见的就是 Gallery Item。§10.2 .azpkg 文件格式发布到 Azure Stack Hub 市场的每个项均使用Azure Gallery Package (.azpkg)格式。.azpkg 本质一个 ZIP 格式的压缩包包含 Gallery Item 的元数据 ARM 模板 依赖文件是 Azure Stack Hub 市场的标准内容格式§10.3 Gallery Packager 工具的工作流使用Azure Gallery Packager工具可以创建自定义 Azure Gallery 包并将该包上传到 Azure Stack Hub 市场。部署过程使用 Azure 资源管理器ARM模板。工具下载aka.ms/azsgallerypackager§10.4 Add-AzsGalleryItem PowerShell 实战要发布自定义市场项步骤第 1 步上传 .azpkg 至 Azure Storage Blob Container使用 PowerShell 或 Azure Storage Explorer 将市场项.azpkg上传到 Azure Blob 存储。请确保该 Blob 可供公开访问。第 2 步远程连接到 Azure Stack Hub 客户端 VM远程桌面RDP到客户端 VM以将刚刚创建的文件复制到 Azure Stack Hub。第 3 步添加 Azure Stack Hub 环境上下文$ArmEndpoint https://adminmanagement.local.azurestack.external Add-AzEnvironment -Name AzureStackAdmin -ArmEndpoint $ArmEndpoint Add-AzAccount -EnvironmentName AzureStackAdmin第 4 步导入市场项Add-AzsGalleryItem -GalleryItemUri https://sample.blob.core.windows.net/temporary-blob-name/offerName.publisherName.version.azpkg -Verbose第 5 步验证准备好库包并使用Add-AzsGalleryItem将其上传后市场和创建资源视图中现在应该会显示你的自定义 VM。§10.5 发布路径总结ISV 制作 .azpkg │ ▼ 上传至 Azure Storage Blob Container公开访问 │ ▼ RDP 到 Azure Stack Hub 客户端 VM │ ▼ 复制 .azpkg 到本地 │ ▼ Add-AzEnvironment Add-AzAccount │ ▼ Add-AzsGalleryItem 导入 │ ▼ 管理员创建 Offer / Plan │ ▼ 租户可见 部署§10.6 Marketplace Item 生命周期图理解一个市场项在 Azure Stack Hub 上的完整生命周期是企业 IT 团队规划运营节奏的关键。Azure MarketplaceMicrosoft / ISV / 其他供应商 │ ▼ Marketplace Syndication管理员同步操作 │ ▼ Marketplace ServiceAzure Stack Hub Marketplace Service │ ▼ Download管理员下载 │ ▼ Marketplace Item本地 Repository 中的副本 │ ▼ Offer / Plan管理员纳入治理 │ ▼ Tenant Subscription租户订阅 │ ▼ Deployment租户部署§11 ARM 模板与 API 配置档案§11.1 ARM 模板的本质ARMAzure Resource Manager模板是基于声明性模型的资源及其配置、代码和扩展规范。关键特性幂等Idempotent—— 多次部署产生相同结果一致的部署—— 同一模板在不同环境中产生相同结构源文件控制—— 模板可纳入 Git / 代码仓库参数化输入 / 输出—— 同一模板适配不同场景§11.2 ARM 模板 vs 命令式部署维度ARM 模板声明式命令式CLI / PowerShell风格描述最终状态描述执行步骤可重复性高幂等中需手动处理重复错误恢复自动重新部署手动逐步回滚适用场景标准化部署、CI/CD临时调试、一次性任务§11.3 API 配置档案API Profiles定义表示一组资源提供程序和 API。核心价值可以创建一个跨越多云的模板将应用程序与配置档案对齐而不是与具体云对齐SDK 转换为每个 RP 正确的 API 版本§11.4 API 配置档案的实战意义假设有一个 ARM 模板部署了存储账户 VM 网络。在不同的云上相同资源类型的 API 版本可能不同Azure 上的Microsoft.Storage/storageAccounts可能是2021-04-01Azure Stack Hub 上的同一个资源类型可能是2019-03-01-hybrid如果不使用 API 配置档案模板必须硬编码 API 版本难以跨云。如果使用 API 配置档案# 查看当前可用的 API 配置档案 Get-AzureRmResourceProvider | Select ProviderNamespace -Expand ResourceTypes | FT Providernamespace, ResourceTypeName, ApiVersions模板可以引用配置档案SDK 根据 API Profile 中定义的映射选择对应资源提供程序支持的 API Version而不是运行时动态协商。§11.5 SDK 的 API 版本映射支持的 SDK.NETPowerShellCLIGoRubyPython§11.6 API Profile 的发布节奏API Profile 随 Azure Stack Hub 生命周期更新——具体发布节奏以微软官方版本说明为准。关键点新配置档案包含当期支持的资源类型 API 版本旧配置档案在一定时间内继续可用向后兼容窗口客户应定期评估是否升级到新配置档案API Profile 与 Azure Stack Hub 版本绑定不存在独立于 Azure Stack Hub 的固定发布节奏§12 Marketplace 设计原则本节提炼 7 条贯穿全文的设计原则可以作为读者复习与团队对齐的速查清单。§12.1 7 条核心原则#原则关键内容①镜像负责提供基础运行环境OS 预装软件 → 决定 VM 的出生状态②扩展负责部署后的配置Custom Script、监控、杀毒等 → 决定 VM 的后天能力③ARM Template 负责资源编排跨资源、跨 VM 的批量部署与生命周期管理④Gallery Item 负责门户体验UI / Metadata / ARM Template / Icon 的组合⑤RP 负责提供新的资源类型部署后出现新的 ARM 资源类型租户通过新类型创建资源⑥Offer / Plan 负责租户治理RBAC 配额 计费 可见性的统一边界⑦Marketplace 负责内容生命周期同步 → 发布 → 部署 → 更新 → Retire 的全链路治理§12.2 责任分工速查内容类型设计 / 制作方支持方ImageMicrosoft / ISV / 企业 IT发布者 / 企业 ITExtensionMicrosoft / ISV发布者ARM TemplateISV / 企业 IT作者Gallery Item (.azpkg)ISV / 企业 IT作者Resource ProviderMicrosoftMicrosoft OEMOffer / PlanAzure Stack Hub 管理员管理员§12.3 选型速查你的交付物是什么选择OS 镜像或预装软件Image§5 / §6部署后运行的扩展程序Extension§8新的 PaaS 服务类型Resource Provider§9多组件组合的完整方案Existing Solutions§10 ARM Template 多组件声明式批量部署脚本ARM Template§11§13 Windows Server 镜像许可与支持 FAQ§13.1 PAYG vs BYOL 的差异微软通过 Azure Stack Hub 市场提供两个版本的 Windows Server 映像。同一个 Azure Stack Hub 环境中的 Windows Server Marketplace 镜像只能选择 PAYG 或 BYOL 其中一种模式。维度PAYG即用即付BYOL自带许可计量模型全价 Windows 计量基本计量底层许可微软按使用计费客户自带许可适用客户EA 企业协议客户消耗计费、不想使用 SPLA 许可的 CSP具有 Windows Server 许可证的 EA 客户、使用 SPLA 许可的 CSP价格较高含许可费较低不含许可费§13.2 只能选一个的精确含义重要澄清这里指的是Windows Server Marketplace 镜像即从市场下载的 Windows Server 镜像不是整个 Azure Stack Hub 环境的许可模式其他操作系统镜像Linux、SQL Server 等的许可模式不受此限制选型建议已有 Windows Server 大量 License → BYOL没有 License 或希望简化采购 → PAYG混合场景Windows 用 BYOL Linux 用 PAYG→ 适用Windows Server 镜像遵循上述规则其他镜像各自规则§13.3 市场项支持的责任划分要解决有关 Azure Stack Hub 市场项的支持问题应该与谁联系问题类型联系方Azure 市场支持微软 Azure 支持Azure Stack Hub 市场项支持发布者负责为其 Azure Stack Hub 市场中的产品提供技术支持Azure Stack Hub 平台问题微软 Azure Stack Hub 支持 OEM重要原则发布者负责为其 Azure Stack Hub 市场中的产品提供技术支持。Azure 市场支持指导不直接覆盖Azure Stack Hub 市场项——ISV / 发布者是第一责任方。§13.4 与 Azure 市场 FAQ 的对照如需有关 Azure 市场项的支持指导请参阅 Azure 市场常见问题解答文章中的支持部分。Azure Stack Hub 市场项的支持由发布者主导不直接套用 Azure 市场的支持流程。§14 结语4 类方案的实战选型§14.1 一页纸选型决策树设计视角你的交付物是什么OS 镜像或预装软件→ Image§5 / §6部署后运行的扩展程序→ Extension§8新的 PaaS 服务类型→ Resource Provider§9多组件组合的完整方案→ Existing Solutions§10 ARM Template声明式批量部署脚本→ ARM Template§11谁负责支持是 Microsoft / ISV / 其他供应商 → Azure 内容§2.1是企业 IT 团队 → 自定义内容§2.2部署模式单一镜像 → 单镜像方案多层架构 → 多镜像 ARM Template§14.2 工程师最容易踩的 5 个坑混淆 Marketplace Item Type 与 ARM Template—— ARM Template 不是 Marketplace 内容类型而是部署技术SQL Resource Provider vs SQL Server 镜像—— 前者是 PaaS 服务后者是镜像不要混用Azure Arc 与 Azure Registration 混淆—— Azure Stack Hub 用 Registration不是 Arc市场项下载 ≠ 租户可见—— 还需要 Offer / Plan 控制可见性PAYG / BYOL 误以为整个 Azure Stack Hub 二选一—— 实际只针对 Windows Server Marketplace 镜像§14.3 与上篇的市场全景对接关注点上篇运营视角本篇设计与发布视角目标读者运维 / 云管理员ISV / 架构师核心问题怎么把市场项下载到 Azure Stack Hub怎么把自定义内容发布到市场主要内容同步 下载 离线交付设计 发布 运营工具市场联合工具、PowerShellGallery Packager、ARM Template、Add-AzsGalleryItem治理RBAC、Offer / Plan、安全镜像元数据、API 配置档案、许可选型附录 A参考链接Plan for Azure Stack Hub MarketplaceAdd a custom platform imageAdd a VM image by using PowerShellAdd the VM extension to the MarketplaceResource providers for Azure Stack HubAzure Gallery Packager toolAdd a custom Marketplace itemAPI profiles for Azure Stack HubARM template documentationGrant a SAS token for Blob storage