NSX Cloud は、1 つ以上の複数のサブスクリプションに必要なサービス プリンシパルとロールを生成するのに役立つ PowerShell スクリプトを提供します。

前提条件

  • AzureRM モジュールがインストールされた PowerShell 5.0 以上が必要です。新しい Azure Powershell Az モジュールを使用している場合は、NSX Cloud の AzureRM コマンドレットが正常に実行されるように、Enable-AzureRmAlias コマンドを実行する必要があります。
  • Microsoft Azure サブスクリプションの所有者であるか、すべての Microsoft Azure サブスクリプションでロールを作成し割り当てる権限を持っている必要があります。
注: Microsoft Azure からの応答時間によって、スクリプトの初回実行時にスクリプトが失敗する可能性があります。スクリプトが失敗した場合は、再度実行してください。

手順

  1. Windows デスクトップまたはサーバで、NSX-T Data Center[ダウンロード] ページ > [ドライバとツール] > [NSX Cloud スクリプト] > [Microsoft Azure] の順に移動して、CreateNSXCloudCredentials.zip という名前の ZIP ファイルをダウンロードします。

  2. Windows システムで、ZIP ファイルの次の内容を展開します。
    スクリプト/ファイル 説明
    CreateNsxRoles.ps1 CSM および PCGNSX Cloud サービス プリンシパルおよび管理対象 ID ロールを生成するための PowerShell スクリプトです。このスクリプトには次のパラメータを使用します。
    • -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:]1 つの Microsoft Azure サブスクリプションを NSX Cloud で有効にする。
    1. PowerShell インスタンスから、Microsoft Azure スクリプトと JSON ファイルをダウンロードしたディレクトリに移動します。
    2. CreateNsxRoles.ps1 という名前のスクリプトを、パラメータ -SubscriptionId を使用して、次のように指定して実行します。
      .\CreateNsxRoles.ps1 -subscriptionId <the_single_Azure_subscription_ID> 
      注: デフォルトのサービス プリンシパル名 nsx-service-admin を上書きする場合は、パラメータ - servicePrincipalName を使用することもできます。サービス プリンシパル名は、Microsoft Azure Active Directory 内で一意である必要があります。
  4. [シナリオ 2:]同じ Microsoft Azure Directory に、NSX Cloud で有効にする複数の Microsoft Azure サブスクリプションがあり、すべてのサブスクリプションで 1 つの 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. CreateNsxRoles.ps1 という名前のスクリプトをパラメータ -subscriptionID および -useOneServicePrincipal を指定して実行します。
      .\CreateNsxRoles.ps1 -subscriptionId <the_Transit_VNet's_Azure_subscription_ID> -useOneServicePrincipal 
      注: デフォルト名 nsx-service-admin を使用する場合は、ここでサービス プリンシパル名を省略します。サービス プリンシパル名が Microsoft Azure Active Directory にすでにある場合は、サービス プリンシパル名なしでこのスクリプトを実行します。これにより、サービス プリンシパルが更新されます。
  5. [シナリオ 3:]同じ Microsoft Azure Directory に、NSX Cloud で有効にする複数の Microsoft Azure サブスクリプションがあり、それぞれのサブスクリプションで異なる NSX Cloud サービス プリンシパルを使用する。
    1. PowerShell インスタンスから、Microsoft Azure スクリプトと JSON ファイルをダウンロードしたディレクトリに移動します。
    2. 2 番目のシナリオの手順 [b][c] に沿って、各 JSON ファイルの AssignableScopes セクションに複数のサブスクリプションを追加します。
    3. CreateNsxRoles.ps1 という名前のスクリプトをパラメータ -subscriptionID を指定して実行します。
      .\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 Active Directory アプリケーション。

  • NSX Cloud アプリケーションの Azure Resource Manager サービス プリンシパル。

  • サービス プリンシパル アカウントに設定された CSM のロール。

  • パブリック クラウド インベントリで機能できるようにする PCG のロール。

  • NSXCloud_ServicePrincipal_<your_subscription_ID>_<NSX_Cloud_Service_Principal_name> のような名前のファイルが、PowerShell スクリプトを実行したディレクトリに作成されます。このファイルには、CSM で Microsoft Azure サブスクリプションを追加するために必要な情報が含まれています。
注: CSM ロールと PCG ロールの作成後に使用可能な権限のリストについては、それらのロールの作成に使用される JSON ファイルを参照してください。

次のタスク

CSM での Microsoft Azure サブスクリプションの追加
注: 複数のサブスクリプションに対して NSX Cloud を有効にする場合は、CSM に個別のサブスクリプションを追加する必要があります。たとえば、合計 5 つのサブスクリプションがある場合、 CSM に 5 つの Microsoft Azure アカウントを追加する必要があります。サブスクリプション ID 以外はすべて同じ値を設定してください。