本文详细介绍了如何使用 Azure 门户中的 Azure 资源管理器 (ARM) 模板在环境中部署 Azure 本地。 本文还包含开始部署所需的先决条件和准备步骤。
重要
Azure 本地系统的 ARM 模板部署面向大规模部署。 此部署的目标受众是具有部署 Azure 本地实例经验的 IT 管理员。 建议先通过 Azure 门户部署系统,然后通过 ARM 模板执行后续部署。
先决条件
- 完成向 Azure Arc 注册计算机并分配部署权限。 确保:
- 所有计算机都运行相同的操作系统版本。
- 所有计算机都具有相同的网络适配器配置。
- 对于 Azure 本地 2411.3 和更低版本,请确保选择 create-cluster-2411.3 模板进行部署。
- 对于 Azure 本地 2503 及更高版本,请确保选择用于部署的 创建群集 模板。
步骤 1:准备 Azure 资源
按照以下步骤准备部署所需的 Azure 资源:
创建服务主体和客户端机密
若要对系统进行身份验证,需要为 Arc 资源桥(ARB)创建服务主体和相应的 客户端机密 。
为 ARB 创建服务主体
按照创建Microsoft Entra 应用程序和服务主体中的步骤操作,该主体可以通过Azure 门户访问资源,以创建服务主体并分配角色。 或者,使用 PowerShell 过程通过 Azure PowerShell 创建 Azure 服务主体。
此处还汇总了这些步骤:
以至少云应用程序管理员身份登录到 Microsoft Entra 管理中心 。 浏览到身份>应用程序>应用注册然后选择“新注册”。
为应用程序提供名称,选择受支持的帐户类型,然后选择“注册”。
创建服务主体后,转到 “企业应用程序 ”页。 搜索并选择你创建的 SPN。
在属性下,复制 此服务主体的应用程序(客户端)ID 和 对象 ID 。
对参数使用应用程序(客户端)ID
arbDeploymentAppID,对 ARM 模板中的参数使用对象 IDarbDeploymentSPNObjectID。
为 ARB 服务主体创建客户端秘密
获取 Azure 本地资源提供程序的对象 ID
Azure 本地资源提供(RP)的此对象 ID 对于每个 Azure 租户是唯一的。
在 Azure 门户中,搜索并选择“Microsoft Entra ID”。
转到 “概述 ”选项卡,搜索 Microsoft.AzureStackHCI 资源提供程序。
选择列出的服务主体名称并复制 对象 ID。
或者,可以使用 PowerShell 获取 Azure 本地 RP 服务主体的对象 ID。 在 PowerShell 中运行以下命令:
Get-AzADServicePrincipal -DisplayName "Microsoft.AzureStackHCI Resource Provider"对 ARM 模板中的参数使用对象 ID
hciResourceProviderObjectID。
步骤 2:使用 ARM 模板进行部署
ARM 模板创建并分配部署所需的所有资源权限。
完成所有先决条件和准备步骤后,即可使用已知良好且经过测试的 ARM 部署模板和相应的参数 JSON 文件进行部署。 使用 JSON 文件中包含的参数填写所有值,包括之前生成的值。
有关参数 JSON 文件的示例,请参阅 azuredeploy.parameters.json。 有关此文件中定义的参数的详细说明,请参阅 ARM 模板参数参考。
重要
确保填写 JSON 文件中的所有参数,包括显示为 [“”]的占位符,这表示参数需要数组结构。 将这些值替换为基于部署环境的实际值,否则验证将失败。
在Azure 门户中,转到“主页”并选择“+ 创建资源”。
在“模板部署”下选择“创建”(使用自定义模板进行部署)。
在页面底部附近,找到从快速启动模板或模板规格入手部分。 选择 “快速入门模板 ”选项。
从 快速入门模板(免责声明) 下拉列表中,选择 create-cluster-2411.3 模板。
完成后,选择 “选择模板 ”按钮。
在 “基本信息 ”选项卡上,可以看到“ 自定义部署 ”页。 可以通过下拉列表选择各种参数,或选择“ 编辑参数”。
注释
有关显示各种输入格式的示例参数文件,例如
ArcNodeResourceId,请参阅 azuredeploy.parameters.json。
使用快速入门模板(免责声明)字段筛选相应的模板。 为筛选器键入 azurestackhci/create-cluster。
完成后,选择 “选择模板 ”按钮。
在 “基本信息 ”选项卡上,可以看到“ 自定义部署 ”页。 可以通过下拉列表选择各种参数,或选择“ 编辑参数”。
注释
有关显示各种输入格式的示例参数文件,例如
ArcNodeResourceId,请参阅 azuredeploy.parameters.json。
编辑网络意向或存储网络意向等参数。 填写参数后, 保存 参数文件。
为环境选择适当的资源组。
滚动到底部,确认 部署模式 = 验证。
选择查看 + 创建。
在“查看 + 创建”选项卡中,选择“创建”。 这会创建剩余的先决条件资源并验证部署。 验证需要大约 10 分钟才能完成。
验证完成后,选择“ 重新部署”。
在 “自定义部署 ”屏幕上,选择“ 编辑参数”。 加载以前保存的参数,然后选择“ 保存”。
在工作区底部,将 JSON 中的最终值从“验证”更改为“部署”,其中部署模式 = 部署。
验证 ARM 部署模板的所有字段是否都由参数 JSON 填充。
为环境选择适当的资源组。
滚动到底部,确认 部署模式 = 部署。
选择查看 + 创建。
选择“创建”。 部署开始,使用在验证步骤中创建的现有先决条件资源。
部署屏幕在部署期间会在群集资源上循环显示。
部署启动后,将先进行有限的环境检查,然后进行完整的环境检查,最后开始云部署。 几分钟后,可以在门户中监视部署。
在新的浏览器窗口中,导航到环境的资源组。 选择群集资源。
选择“部署”。
刷新并观察第一台计算机的部署进度(也称为种子计算机,也是部署群集的第一台计算机)。 部署需要 2.5 到 3 小时。 几个步骤需要 40-50 分钟或更多时间。
部署中花费时间最长的步骤是 部署 Moc 和 ARB Stack。 此步骤需要 40-45 分钟。
完成后,顶部的任务会更新状态和结束时间。
ARM 模板参数参考
下表描述了在 ARM 模板的参数文件中定义的参数:
| 参数 | DESCRIPTION |
|---|---|
| deploymentMode | 确定部署过程是否应仅验证或继续执行完整部署: - 验证:为此系统创建 Azure 资源,并验证系统的部署准备情况。 - 部署:成功验证后执行实际部署。 |
| KeyVaultName | 用于存储机密的 Azure Key Vault 的名称。 有关命名约定,请参阅 Azure 资源的命名规则和限制一文中的 Microsoft.KeyVault 。 |
| softDeleteRetentionDays | 删除的项(如机密、密钥或证书)在永久删除之前保留在 Azure Key Vault 中的天数。 指定介于 7 到 90 天之间的值。 以后无法更改保留期。 |
| diagnosticStorageAccountName | 用于存储密钥保管库审核日志的 Azure 存储帐户的名称。 此帐户是具有锁的本地冗余存储(LRS)帐户。 有关详细信息,请参阅 Azure 存储帐户。 有关命名约定,请参阅Azure 存储帐户名称。 |
| logsRetentionInDays | 日志保留的天数。 如果不想应用任何保留策略并永久保留数据,请指定 0。 |
| 存储账户类型 | 要用于部署的 Azure 存储帐户的类型。 例如,Standard_LRS。 |
| 集群名称 | 要部署的 Azure 本地实例的名称。 这是表示云上的群集的名称。 它必须与任何节点名称不同。 |
| 位置 | 部署位置,通常派生自资源组。 有关受支持的 Azure 区域的列表,请参阅 Azure 要求。 |
| 租户ID | Azure 订阅租户 ID。 有关详细信息,请参阅 “查找Microsoft Entra 租户。 |
| witnessType (见证类型) | Azure 本地群集的见证类型。
见证类型必须是双节点群集的云。 对于其他群集大小,它可以为空。 有关云见证的详细信息,请参阅 部署仲裁见证。 |
| clusterWitnessStorageAccountName | 用于群集见证的存储帐户的名称。 有关详细信息,请参阅 Azure 存储帐户。 有关命名约定,请参阅Azure 存储帐户名称。 |
| localAdminUserName | 系统中所有计算机的本地管理员的用户名。 系统中所有计算机的凭据都是相同的。 有关详细信息,请参阅 查看 Azure 本地部署先决条件。 |
| localAdminPassword | 系统中所有计算机的本地管理员的密码。 系统中所有计算机的凭据都是相同的。 有关详细信息,请参阅 查看 Azure 本地部署先决条件。 |
| AzureStackLCMAdminUsername | LCM 管理员的用户名。 有关详细信息,请参阅 查看 Azure 本地部署先决条件。 |
| AzureStackLCMAdminPasssword | LCM 管理员的密码。 有关详细信息,请参阅 查看 Azure 本地部署先决条件。 |
| hciResourceProviderObjectID | Azure 本地资源提供程序的对象 ID。 有关详细信息,请参阅 获取 Azure 本地资源提供程序的对象 ID。 |
| arcNodeResourceIds | 已启用 Azure Arc 的服务器的资源 ID 数组,这些服务器属于此 Azure 本地群集。 |
| domainFqdn | 为部署准备的 Active Directory 域服务的完全限定域名 (FQDN)。 |
| naming前缀 | 用于为 Azure 本地部署创建的所有对象的前缀。 |
| 阿杜路径 | 为此部署创建的组织单位(OU)的路径。 OU 不能位于域的顶层。 例如:OU=Local001,DC=contoso,DC=com。 |
| securityLevel 安全级别 | 部署期间要应用于 Azure 本地群集的安全配置文件。 默认值为 “建议”。 |
| driftControl强制执行 | 用于定期重新应用安全默认值的偏移控制设置。 有关详细信息,请参阅 Azure 本地版的安全功能。 |
| credentialGuardEnforced | 使用基于虚拟化的安全性来隔离机密免受凭据盗窃攻击的 Credential Guard 设置。 有关详细信息,请参阅 管理 Azure 本地的安全默认值。 |
| smbSigningEnforced | 设置此 Azure 本地群集和其他群集之间的 SMB 流量签名,以帮助防止中继攻击。 有关详细信息,请参阅 服务器消息块签名概述。 |
| smbClusterEncryption | 用于加密存储网络上群集中服务器之间的流量的 SMB 群集流量设置。 有关详细信息,请参阅 SMB 加密。 |
| bitlocker 引导卷 | 用于在每个服务器上加密 OS 卷的 BitLocker 加密设置。 有关详细信息,请参阅 管理 Azure 本地上的 BitLocker 加密。 |
| bitlockerDataVolumes | 用于加密部署期间在此系统上创建的群集共享卷(CSV)的 BitLocker 加密设置。 有关详细信息,请参阅 管理 Azure 本地上的 BitLocker 加密。 |
| wdacEnforced | 应用程序控制设置,用于控制允许哪些驱动程序和应用直接在每个服务器上运行。 有关详细信息,请参阅 管理 Azure 本地的应用程序控制。 |
| streamingDataClient | 指定是否启用从 Azure 本地群集流式传输到Microsoft的遥测数据。 |
| euLocation | 指定是否在欧盟(欧盟)中发送和存储遥测和诊断数据。 |
| episodicDataUpload | Episodic 诊断数据设置,用于指定是否收集日志数据和上传到Microsoft,以帮助进行故障排除和支持。 有关详细信息,请参阅故障转储收集。 |
| configurationMode | 存储卷配置模式。 支持的值包括: - Express:为每个计算机创建一个精简预配的卷和存储路径,供工作负荷使用。 除此之外,每个群集还需要一个基础结构卷。 - InfraOnly:为每个群集仅创建所需的一个基础结构卷。 稍后需要创建工作负荷卷和存储路径。 - KeepStorage:保留包含存储空间池和卷的现有数据驱动器。 |
| subnetMask | Azure 本地部署使用的管理网络的子网掩码。 |
| defaultGateway 网关 | 用于部署 Azure 本地群集的默认网关。 |
| startingIPAddress | 管理网络子网上至少包含六个静态 IP 地址的连续块中的第一个 IP 地址,省略计算机已使用的地址。 这些 IP 由 Azure 本地和内部基础结构(Arc 资源网桥)使用,Arc VM 管理和 AKS 混合都需要使用这些 IP。 |
| endingIPAddress | 管理网络子网上至少六个静态 IP 地址的连续块中的最后一个 IP 地址,省略计算机已使用的地址。 这些 IP 由 Azure 本地和内部基础结构(Arc 资源网桥)使用,Arc VM 管理和 AKS 混合都需要使用这些 IP。 |
| dns服务器 | DNS 服务器 IP 列表。 |
| 使用Dhcp | 指示是否对主机和群集 IP 使用动态主机配置协议(DHCP)。 如果未声明,部署将默认为静态 IP。 如果为 TRUE,则不需要网关和 DNS 服务器。 |
| physicalNodesSettings | 物理节点的数组及其 IP 地址。 |
| networkingType | 网络类型。 例如,switchedMultiServerDeployment。 有关详细信息,请参阅 “指定网络设置”。 |
| networkingPattern | 用于网络的模式。 例如,hyperConverged。 |
| intentList | 部署意向列表。 |
| storageNetworkList | 存储网络列表。 |
| storageConnectivitySwitchless | 指定是否在没有网络交换机的情况下配置存储连接。 |
| enableStorageAutoIp | 指定是否启用自动 IP 分配。 |
| 自定义位置 | 部署的自定义位置。 |
| sbeVersion | 在 Azure 本地部署期间要使用的解决方案生成器扩展(SBE)的版本。 |
| sbeFamily | 部署期间应用的 SBE 包的系列或类别。 |
| sbePublisher | SBE 的发布者或供应商。 |
| sbeManifestSource (英文) | SBE 清单文件的源位置。 |
| sbeManifestCreationDate (sbe清单创建日期) | SBE 清单的创建日期。 |
| partnerProperties | 特定于合作伙伴的属性的列表。 |
| partnerCredentiallist | 合作伙伴凭据列表。 |
排查部署问题
如果部署失败,则应在部署页上看到一条错误消息。
ARM 模板部署的已知问题
本部分包含 ARM 模板部署的已知问题和解决方法。
角色分配已存在
问题:在此版本中,你可能会看到 角色分配已存在 错误。 如果首先尝试从门户进行 Azure 本地实例部署,并且同一资源组用于 ARM 模板部署,则会发生此错误。 在适用资源的“概述>部署详细信息”页上看到此错误。 此错误表示同一资源组范围的另一个标识已完成等效的角色分配,ARM 模板部署无法执行角色分配。
解决方法:“部署详细信息”页上失败的资源指定了角色分配名称。 如果资源名称为 AzureStackHCIDeviceManagementRole-RoleAssignment,则 Azure Stack HCI 设备管理角色的分配失败。 请注意此角色名称,并转到 资源组 > 访问控制(IAM) > 角色分配。 搜索相应的名称,并删除该处的现有角色分配。 重新部署模板。
不允许更新租户 ID、应用程序 ID、主体 ID 和范围
问题:角色分配失败, 租户 ID、应用程序 ID、主体 ID 和作用域不允许更新。 在适用资源的“概述>部署详细信息”页上看到此错误。 当同一资源组中存在僵尸角色分配时,可能会显示此错误。 例如,执行之前部署时,删除了与该部署对应的资源,但角色分配资源会保留。
解决方法:若要标识僵尸角色分配,请转到 访问控制(IAM) > 角色分配 > 类型:未知 选项卡。这些分配被列为 找不到标识。找不到标识。 删除此类角色分配,然后重试 ARM 模板部署。
许可证同步问题
问题:在此版本中,使用 ARM 模板部署时可能会遇到许可证同步问题。
解决方法:系统完成验证阶段后,如果系统处于部署失败状态,建议不要在“验证”模式下启动另一个 ARM 模板部署。 启动另一个部署会重置系统属性,这可能会导致许可证同步问题。