次の手順に従って、VMware Cloud on AWS を使用したフェレデーション アーキテクチャを使用するポッド環境の Horizon Cloud Connector アプライアンスをダウンロードしてデプロイします。フェレデーション アーキテクチャでは、ポッドの環境内のネイティブの Amazon Elastic Computer Cloud (EC2) インフラストラクチャに Horizon Cloud Connector をデプロイする必要があります。

重要: この情報は、第 1 世代の制御プレーンで第 1 世代のテナント環境にアクセスできる場合にのみ適用されます。 KB-92424 で説明されているように、第 1 世代の制御プレーンは提供終了 (EOA) となりました。詳細については、該当記事を参照してください。

Horizon ポッドのデプロイ アーキテクチャの背景情報については、第 1 世代テナント - 第 1 世代 Horizon Cloud を使用した Horizon ポッドのデプロイ アーキテクチャを参照してください。

以下は、ポッドの環境内のネイティブの Amazon EC2 インフラストラクチャに Horizon Cloud Connector をデプロイするために必要な手順の概要です。

  • VMDK 形式の Horizon Cloud Connector ファイルをダウンロードします。
  • Amazon EC2 に Amazon Simple Storage Service (S3) バケットを作成し、アプライアンスの VMDK ファイルをそのバケットにアップロードします。
  • アップロードした VMDK ファイルからカスタム イメージを作成します。
  • カスタム イメージから Horizon Cloud Connector 仮想マシン (VM) インスタンスを作成します。
重要: Horizon Cloud Connector をネイティブの Amazon EC2 インフラストラクチャにデプロイすると、次の Horizon Cloud サービスがデフォルトで無効になります。アプライアンスをデプロイした後、オプションで これらのサービスを 1 つ以上手動で有効にすることができます。
  • Cloud Monitoring Service
  • クラウド ブローカ クライアント サービス
  • イメージ ローカリティ サービス

前提条件

手順

  1. サブスクリプション メールに記載されているリンクを使用して、Horizon Cloud Connector ディスク イメージをダウンロードします。
    注: アプライアンスの Amazon EC2 環境へのデプロイをサポートするには、バージョン 2.0 以降の Horizon Cloud Connector ディスク イメージをダウンロードする必要があります。

    Horizon Cloud Connector ディスク イメージは、My VMware アカウントの認証情報を使用して my.vmware.com にログインした後、VMDK ファイルとして利用できます。VMDK ファイルをローカル システムにダウンロードします。

    ディスク イメージ ファイルを Amazon EC2 環境にアップロードする前に、まず Amazon S3 バケットを作成する必要があります。
  2. Amazon EC2 環境で Amazon S3 バケットを作成します。詳細な手順については、Amazon Elastic Compute Cloud のドキュメントを参照してください。
  3. ダウンロードした VMDK ファイルを Amazon S3 バケットにアップロードします。この手順は、AWS マネジメント コンソールまたは AWS コマンドライン インターフェイス (CLI) を使用して実行できます。
    • (AWS マネジメント コンソール)Amazon EC2 環境の AWS マネジメント コンソールにログインします。S3 サービスに移動し、以前に作成したバケットを選択し、そのバケットに VMDK ファイルをアップロードします。
    • (AWS CLI) AWS CLI にアクセスし、次のコマンドを実行します。
      aws s3 cp <file-path-to-VMDK-file> <S3URI>

      cp コマンドの実行の詳細については、Amazon Elastic Compute Cloud のドキュメントを参照してください。

    AWS マネジメント コンソールでは、VMDK ファイルは [オブジェクト] タブに表示されます。
  4. サービス ロールとポリシーを作成し、ポリシーをロールに添付します。
    1. この手順に必要な 3 つの新しい JSON ファイルの最初のファイルを作成します。
      この特定の JSON ファイルの目的は、サービスとロールの情報を格納することです。ファイルに任意の名前を付けます。この手順では、このファイルのファイル名の例は trust-policy.json です。
    2. 任意の名前でサービス ロールを作成し、新しい JSON ファイルにロール情報を保存します。
      たとえば、CLI を使用して、次のようなコマンドを実行します。
      次のコマンドは一般的な例です。
      aws iam create-role --role-name <role-name> --assume-role-policy-document <file-path>

      次のコマンドの例では、プレースホルダ <role-name> を特定の例 vmimport に置き換え、プレースホルダ <file-path> を特定の例 trust-policy.json に置き換えています。

      aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json

      create-role コマンドの実行の詳細については、Amazon Elastic Compute Cloud のドキュメントを参照してください。

      次のテキストは、上記のコマンドを実行した後の JSON ファイルの内容の例です。
      {
          "Version":"2012-10-17",
          "Statement":[
              {
                  "Sid":"",
                  "Effect":"Allow",
                  "Principal":{
                      "Service":"vmie.amazonaws.com"
                  },
                  "Action":"sts:AssumeRole",
                  "Condition":{
                      "StringEquals":{
                          "sts:ExternalId":"vmimport"
                      }
                  }
              }
          ]
      }
    3. この手順に必要な 3 つの新しい JSON ファイルの 2 番目のファイルを作成します。
      以下の例で使用する <bucket-name> など、VMDK ファイルをアップロードするバケットの名前を指定します。
      この特定の JSON ファイルの目的は、新しいポリシーを新しいロールに添付することです。ファイルに任意の名前を付けます。この手順では、このファイルのファイル名の例は role-policy.json です。
      次のテキストは、サンプルの role-policy.json ファイルの内容の例です。
      {
          "Version":"2012-10-17",
          "Statement":[
              {
                  "Effect":"Allow",
                  "Action":[
                      "s3:ListBucket",
                      "s3:GetBucketLocation"
                  ],
                  "Resource":[
                      "arn:aws:s3:::<bucket-name>"
                  ]
              },
              {
                  "Effect":"Allow",
                  "Action":[
                      "s3:GetObject"
                  ],
                  "Resource":[
                      "arn:aws:s3:::<bucket-name>/*"
                  ]
              },
              {
                  "Effect":"Allow",
                  "Action":[
                      "ec2:ModifySnapshotAttribute",
                      "ec2:CopySnapshot",
                      "ec2:RegisterImage",
                      "ec2:Describe*"
                  ],
                  "Resource":"*"
              }
          ]
      }
    4. ポリシーを作成し、新しいロールに添付して、新しく作成した JSON ファイルに保存します。

      たとえば、CLI を使用して、次のようなコマンドを実行します。

      次のコマンドは一般的な例です。
      aws iam put-role-policy --role-name <role-name> --policy-name <policy-name> --policy-document <file-path>

      次の具体例では、プレースホルダ <role-name> を、vmimport という名前のポリシーの具体例に置き換え、プレースホルダ <policy-name> を以前に名前を付けたロール、つまり vmimport という名前のロールの具体例に置き換え、プレースホルダ <file-path> を以前に名前を付けた JSON ファイル role-policy.json の具体例に置き換えます。

      aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json

      put-role-policy コマンドの実行の詳細については、Amazon Elastic Compute Cloud のドキュメントを参照してください。

  5. インポートされた VMDK ファイルからスナップショットをインポートします。
    1. この手順に必要な 3 つの新しい JSON ファイルの 3 番目のファイルを作成します。
      このファイルに次の情報を含めます。
      • バケット名(次の例で使用されている <bucket-name> など)。
      • Amazon S3 バケットにアップロードした VMDK ファイルのファイル名(次の例で使用されている <vmdk-file-name-uploaded-to-S3> など)。
      この特定の JSON ファイルの目的は、インポートされた VMDK ファイルのスナップショットを格納することです。ファイルに任意の名前を付けます。この手順では、このファイルのファイル名の例は container.json です。
      次のテキストは、 container.json ファイルの内容の例です。
      {
          "Description": "Adapter-VM",
          "Format": "vmdk",
          "UserBucket": {
              "S3Bucket": "<bucket-name>",
              "S3Key": "<vmdk-file-name-uploaded-to-S3>"
          }
      }
    2. コマンドを実行して、インポートした VMDK ファイルから新しく作成した JSON ファイルにスナップショットをインポートします。
      CLI を使用して、次のタイプのコマンドを実行します。
      aws ec2 import-snapshot --role-name <role-name> --description <description> --disk-container <file-path>

      import-snapshot コマンドの実行の詳細については、Amazon Elastic Compute Cloud のドキュメントを参照してください。

      次のコマンドは、 import-snapshot コマンドの具体例です。ここでは、 role-name パラメータはオプションで使用されておらず、説明は "Adapter-VM" で、コンテナのファイル名は container.json です。
      aws ec2 import-snapshot --description "Adapter-VM" --disk-container file://container.json
      import-snapshot コマンドは完了まで数分かかることがあります。ただし、コマンドを実行すると、コマンドの出力が作成されます。この出力には、タスクの進行状況の追跡に使用できる ImportTaskId 行が含まれています。次の出力に一例を示します。
      {
          "ImportTaskId": "import-snap-05b4c84af4xxxxxxx",
          "Description": "Adapter-VM",
          "SnapshotTaskDetail": {
              "StatusMessage": "pending",
              "UserBucket": {
                    "S3Bucket": "awsbucket",
                   "S3Key": "horizon-cloud-connector-2.0.0.0-18191154_OVF10-disk1.vmdk"
               },
             "Progress": "0",
             "Status": "active",
              "Description": "Adapter-VM",
              "DiskImageSize": 0.0
          }
      
      }
    3. import-snapshot コマンド出力の ImportTaskId 値を書き留めます。
  6. import-snapshot タスクの進行状況を追跡し、スナップショット ID を取得するには、次のコマンドを実行します。
    aws ec2 describe-import-snapshot-tasks --import-task-ids <import-task-id>

    <import-task-id> プレースホルダを import-snapshot コマンド出力にリストされた値に置き換えます。上記の出力例にリストされている値の例は import-snap-05b4c84af4xxxxxxx です。describe-import-snapshot-tasks コマンドの実行の詳細については、Amazon Elastic Compute Cloud のドキュメントを参照してください。

    describe-import-snapshot-tasks コマンドは、 import-snapshot タスクの進行状況を示す出力を提供し、タスクが完了すると、イメージの登録に必要なスナップショット ID を提供します。次に例を示します。
    • "Progress": "43"。この行のような出力の行は、import-snapshot タスクの進行状況の割合を示します。この例では、タスクは 43% 完了しています。
    • "Status": "completed"。この行のような出力の行は、import-snapshot タスクが完了したことを示します。
    • "SnapshotId": "snap-06d42e043bxxxxxxx"。タスクが完了すると、出力にこのような行が含まれます。この例では、スナップショット ID は snap-06d42e043bxxxxxxx です。
  7. describe-import-snapshot-tasks コマンドの出力からスナップショット ID を書き留めます。
  8. スナップショット イメージを登録するには、register-image コマンドを実行します。
    aws ec2 register-image --region us-west-2 --name <image-name> --architecture x86_64 --root-device-name '/dev/sda1' --virtualization-type hvm --ena-support --block-device-mappings DeviceName=/dev/sda1,Ebs={SnapshotId=<SnapshotId>} 
    ここでは、 --region--architecture など、各オプションのデプロイに固有の応答を提供する必要があります。 register-image コマンドの実行の詳細については、Amazon Elastic Compute Cloud のドキュメントを参照してください。

    次の情報は、--name オプションと SnapshotId パラメータに固有です。

    • --name - 文字列の制約に従って、イメージの名前を指定します。
    • SnapshotId - describe-import-snapshot-tasks コマンド出力からのスナップショット ID を指定します。
    register-image コマンドは、Amazon Machine Image (AMI) の ID を含む出力を提供します。次の例は、典型的な register-image 出力です。
        {
            "ImageId": "ami-0721ee000321c4685"
        }

    register-image コマンド出力に示されている AMI は、AWS マネジメント コンソールの AMI のリストの中にも表示されます。

  9. Horizon Cloud Connector AMI インスタンスの作成と構成をサポートするには、次の例のような起動スクリプトを準備します。
    #! /bin/bash
    /usr/bin/python3 /opt/vmware/bin/configure-adapter.py --sshEnable
    sudo useradd ccadmin
    echo -e 'password\npassword' | passwd ccadmin
    echo 'cs_ip cs_fqdn' >> /etc/hosts
    この例では、スクリプトが次の構成をサポートしています。
    • Horizon Cloud Connector アプライアンスへの SSH アクセスの有効化。
    • 定義されたパスワード (password) を使用したアプライアンス上での ccadmin ユーザー アカウントの作成。強力なパスワードを定義してください。強力なパスワードは 8 文字以上で、1 つ以上の数字、大文字と小文字、特殊文字を含める必要があります。
    • Connection Server のホスト名 (cs_fqdn) から Connection Server の IP アドレス (cs_ip) への解決。

    Horizon Cloud Connector AMI インスタンスを起動する次の手順で、このスクリプトをユーザー データに追加する必要があります。

  10. Horizon Cloud Connector の AMI インスタンスを起動します。
    重要: インスタンスで十分な機能が提供されるようにするには、モデル c5.2xlarge 以上を使用します。

    インスタンスは、AWS マネジメント コンソールまたは CLI を使用して起動できます。いずれの場合も、register-image コマンドの出力で提供される Amazon Machine Image (AMI) の ID を使用し、前の手順で準備した起動スクリプトをユーザー データに追加します。

    重要: ユーザー データは AMI インスタンスの最初の起動シーケンスでのみ実行されるため、この時点で起動スクリプトを追加する必要があります。

    CLI を使用するには、Amazon Elastic Compute Cloud のドキュメントを参照して、run-instances コマンドの実行の詳細を確認してください。

    AWS マネジメント コンソールを使用するには、Amazon Elastic Compute Cloud のドキュメントで詳細(インスタンスの起動ウィザードを使用したインスタンスの起動など)を参照してください。

    AWS マネジメント コンソールを使用してインスタンスを起動する場合、イメージ ID で新しい AMI を探して、AMI を選択し、[起動] をクリックします。その後、デプロイの詳細を指定してウィザードを続行できます。

  11. Horizon Cloud Connector AMI が起動したら、AMI インスタンスの構成を編集し、起動スクリプトを削除します。

次のタスク

第 1 世代テナント - Horizon ポッドと仮想アプライアンスの第 1 世代 Horizon 制御プレーンとのペアリングの準備ができていることを確認するの手順に従って、ポッドのオンボーディング ワークフローを続行します。 第 1 世代テナント - Horizon Cloud Connector 構成ポータルを使用して Horizon ポッドと第 1 世代 Horizon Cloud のペアリングを完了する に進みます。
注: デフォルトで無効になっている 1 つ以上のクラウドプレーン サービスを有効にする場合は、ポッドとクラウド プレーンのペアリングを完了する前にそれらを有効にする必要があります。 第 1 世代テナント - ネイティブの Amazon EC2 の Horizon Cloud Connector に対し第 1 世代の Horizon Cloud 制御プレーン サービスを手動で有効にするを参照してください。