NSX Cloud 提供了 PowerShell 脚本,可帮助您为一个或多个订阅生成所需的服务主体和角色。

前提条件

  • 必须安装有包含 AzureRM 模块的 PowerShell 5.0+。
  • 必须是所有者,或者具有在所有 Microsoft Azure 订阅中创建和分配角色的权限。
注: 首次运行脚本时,Microsoft Azure 响应时间可能会导致脚本失败。如果脚本失败,请尝试重新运行。

过程

  1. 在 Windows 桌面或服务器上,从 NSX-T Data Center 下载页面 > 驱动程序和工具 > NSX Cloud 脚本 > Microsoft Azure 下载名为 CreateNSXCloudCredentials.zip 的 ZIP 文件。

  2. 将 ZIP 文件的以下内容提取到 Windows 系统中:
    脚本/文件 说明
    CreateNSXRoles.ps1 此 PowerShell 脚本用于生成 NSX Cloud 服务主体以及为 CSMPCG 生成受管身份角色。此脚本采用以下参数:
    • -subscriptionId <the Transit_VNet's_Azure_subscription_ID>
    • (可选)-servicePrincipalName <Service_Principal_Name>
    • (可选)-useOneServicePrincipal
    AddServicePrincipal.ps1 如果要添加多个订阅并且为每个订阅分配不同的服务主体,则需要此可选脚本。请参见以下步骤中的场景 3。此脚本采用以下参数:
    • -computeSubscriptionId <the_Compute_VNet's_Azure_subscription_ID>
    • -transitSubscriptionId <the Transit_VNet's_Azure_Subscription_ID>
    • -csmRoleName <CSM_Role_Name>
    • -servicePrincipalName <Service_Principal_Name>
    nsx_csm_role.json 针对 CSM 角色名称和权限提供的一个 JSON 模板。需要此文件作为 PowerShell 脚本的输入,并且它必须与脚本位于同一文件夹中。
    nsx_pcg_role.json 针对 PCG 角色名称和权限提供的一个 JSON 模板。需要此文件作为 PowerShell 脚本的输入,并且它必须与脚本位于同一文件夹中。
    注: 默认 PCG(网关)角色名称为 nsx-pcg-role。在 CSM 中添加您的订阅时,需要提供此值。
  3. 场景 1:具有要通过 NSX Cloud 启用的单个 Microsoft Azure 订阅。
    1. 从 PowerShell 实例中,转到下载了 Microsoft Azure 脚本和 JSON 文件的目录。
    2. 使用参数 -SubscriptionId 运行名为 CreateNSXRoles.ps1 的脚本,如下所示:
      .\CreateNSXRoles.ps1 -subscriptionId <the_single_Azure_subscription_ID> 
      注: 如果要替代 nsx-service-admin 的默认服务主体名称,也可以使用参数 - servicePrincipalName。服务主体名称在 Microsoft Azure Active Directory 中必须是唯一的。
  4. 场景 2:在要通过 NSX Cloud 启用的同一 Microsoft Azure 目录下具有多个 Microsoft Azure 订阅,但要在所有订阅中使用一个 NSX Cloud 服务主体。
    1. 从 PowerShell 实例中,转到下载了 Microsoft Azure 脚本和 JSON 文件的目录。
    2. 编辑每个 JSON 文件以在标题为“AssignableScopes”的部分下添加其他订阅 ID 的列表,例如:
      "AssignableScopes": [
      
      "/subscriptions/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
      
      "/subscriptions/aaaaaaaa-bbbb-cccc-dddd-ffffffffffff",
      
      "/subscriptions/aaaaaaaa-bbbb-cccc-dddd-000000000000"
      注: 必须使用示例中显示的格式来添加订阅 ID: "/subscriptions/<Subscription_ID>"
    3. 运行带参数 -subscriptionID -useOneServicePrincipal 的名为 CreateNSXRoles.ps1 的脚本:
      .\CreateNSXRoles.ps1 -subscriptionId <the_Transit_VNet's_Azure_subscription_ID> -useOneServicePrincipal 
      注: 如果要使用默认名称 nsx-service-admin,请在此处省略服务主体名称。如果该服务主体名称已存在于 Microsoft Azure Active Directory 中,则不带服务主体名称运行此脚本将更新该服务主体。
  5. 场景 3:在要通过 NSX Cloud 启用的同一 Microsoft Azure 目录下具有多个 Microsoft Azure 订阅,但不同的订阅要使用不同的 NSX Cloud 服务主体名称。
    1. 从 PowerShell 实例中,转到下载了 Microsoft Azure 脚本和 JSON 文件的目录。
    2. 按照场景 2 中的步骤 bc,将多个订阅添加到每个 JSON 文件的 AssignableScopes 部分。
    3. 运行带参数 -subscriptionID 的名为 CreateNSXRoles.ps1 的脚本:
      .\CreateNSXRoles.ps1 -subscriptionId <One of the subscription_IDs> 
      注: 如果要使用默认名称 nsx-service-admin,请在此处省略服务主体名称。如果该服务主体名称存在于 Microsoft Azure Active Directory 中,则不带服务主体名称运行此脚本将更新该服务主体。
    4. 运行带以下参数的名为 AddServicePrincipal.ps1 的脚本:
      参数
      -computeSubscriptionId Compute_VNet 的 Azure 订阅 ID
      -transitSubscriptionId 转换 VNet 的 Azure 订阅 ID
      -csmRoleName 从文件 nsx_csm_role.JSON 中获取此值。
      -servicePrincipalName 新服务主体名称
      ./AddServicePrincipal.ps1 -computeSubscriptionId <the_Compute_VNet's_Azure_subscription_ID>
       -transitSubscriptionId <the_Tranist_VNet's_Azure_Subscription_ID> 
      -csmRoleName <CSM_Role_Name>
      -servicePrincipalName <new_Service_Principal_Name>”
  6. 在运行 PowerShell 脚本的同一目录中查找文件。该文件的文件名类似于:NSXCloud_ServicePrincipal_<your_subscription_ID>_<NSX_Cloud_Service_Principal_name>。该文件包含在 CSM 中添加 Microsoft Azure 订阅所需的信息。
    • 客户端 ID
    • 客户端密钥
    • 租户 ID
    • 订阅 ID

结果

将创建以下结构:

  • NSX Cloud 创建 Azure AD 应用程序。

  • NSX Cloud 应用程序创建 Azure 资源管理器服务主体。

  • 为连接到服务主体帐户的 CSM 创建角色。

  • PCG 创建角色,以使其在公有云清单上运行。

  • 在运行 PowerShell 脚本的同一目录中创建名称类似 NSXCloud_ServicePrincipal_<your_subscription_ID>_<NSX_Cloud_Service_Principal_name> 的文件。该文件包含在 CSM 中添加 Microsoft Azure 订阅所需的信息。
注: 有关创建 CSMPCG 角色后适用于这些角色的权限列表,请参阅用于创建这些角色的 JSON 文件。

后续步骤

在 CSM 中添加 Microsoft Azure 订阅
注: 为多个订阅启用 NSX Cloud 时,必须将每个单独的订阅分别添加到 CSM,例如,如果共有五个订阅,则必须在 CSM 中添加五个 Microsoft Azure 帐户,所有其他值相同,但订阅 ID 不同。