Horizon Edge Gateway をダウンロードして Amazon Web Services (AWS) の Horizon 8 フェデレーション デプロイにデプロイし、Horizon Cloud Service - next-gen とペアリングできます。

前提条件

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

  • Horizon 8 Edge デプロイ」に記載されている Horizon Edge Gateway 関連の前提条件を満たしていることを確認します。
  • Horizon Edge Gateway を使用して Horizon 8 ポッドを Horizon Cloud Service とペアリングするための「Horizon 8 環境に Horizon Edge Gateway をデプロイするために適切なターゲット URL をアクセス可能にする」を満たしていることを確認します。
  • Horizon Edge Gateway 仮想アプライアンスは、インターネットにアクセスして Horizon Cloud 制御プレーンと通信する必要があります。ご使用の環境で、デプロイされたアプライアンスがインターネットにアクセスするためにプロキシ サーバとプロキシ構成を使用する必要がある場合、プロキシ設定を Horizon Edge Gateway アプライアンスで使用するときのプロキシ関連の情報、既知の制限、既知の問題を認識していることを確認します。
  • pair-edge スクリプトの実行時にプロキシを使用する場合、まず次のコマンドを実行し、ProxySSL が有効な場合は true、それ以外の場合は false として指定する必要があります。
    /opt/vmware/bin/pair-edge-with-proxy.sh -i 'IP_or FQDN_of Proxy' -o 'Proxy_Port' -u 'Proxy_User_Name' -p 'Proxy_Password' -s 'true_or_false' -c 'Connection_String'
    次の「注」でプロキシ関連の情報を確認してください。
    注: [Edge のプロキシ構成の更新]
    /opt/vmware/bin/configure-edge-webproxy.py --proxyHost 127.0.0.1 --proxyPort 3128 --proxyUsername 'exampleUsername' --proxyPassword 'examplePassword'
    
    その他のオプションを確認するには、次に示すように -h オプションを指定してスクリプトを実行します。
    /opt/vmware/bin/configure-edge-webproxy.py -h
  • 多くの手順では、コマンドラインを使用する必要があります。ただし、AWS マネジメント コンソールまたは AWS コマンド ライン インターフェイス (CLI) を使用して実行できるデプロイ手順もあります。Amazon EC2 環境の操作の詳細については、https://docs.aws.amazon.com/ec2/index.html にある Amazon Elastic Compute Cloud のドキュメントを参照してください。以下の手順では、特定のタイプの Amazon Elastic Compute Cloud ドキュメントを参照することをお勧めすることがよくあります。

手順

  1. Horizon Edge Gateway ディスク イメージをダウンロードします。このためには、手順 7.[ダウンロード] を使用して、Horizon Edge Gateway アプライアンス バイナリを取得します。 の指示(Horizon 8 のデプロイと Horizon Cloud Service - next-gen 制御プレーンで使用する Horizon Edge のデプロイ ページの手順にある)に従って、画面上のすべてのプロンプトに応答します。

    Horizon Edge Gateway ディスク イメージは VMDK ファイルとして使用できます。VMDK ファイルをローカル システムにダウンロードします。

    注: edge-gw-2.3.3.0-22720582.ec2.vmdk など、バージョン 2.3.3.0 以降の Horizon Edge Gateway ディスク イメージをダウンロードします。

    ダウンロードしたバイナリを目的の仮想化プラットフォームにデプロイする場所に保存し、この手順シーケンスに戻って必要なペアリング プロセスを続行します。

    ディスク イメージ ファイルを 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 です。
      次のテキストは、JSON ファイルの内容の例です。
      {
          "Version":"2012-10-17",
          "Statement":[
              {
                  "Sid":"",
                  "Effect":"Allow",
                  "Principal":{
                      "Service":"vmie.amazonaws.com"
                  },
                  "Action":"sts:AssumeRole",
                  "Condition":{
                      "StringEquals":{
                          "sts:ExternalId":"vmimport"
                      }
                  }
              }
          ]
      }
    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 のドキュメントを参照してください。

    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": "edge-gw-2.3.3.0-22720582.ec2.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 Edge Gateway 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 Edge Gateway アプライアンスへの SSH アクセスの有効化。
    • 定義されたパスワード (<Mypassword>\n<Mypassword>) を使用したアプライアンス上での ccadmin ユーザー アカウントの作成。強力なパスワードを定義してください。強力なパスワードは 8 文字以上で、1 つ以上の数字、大文字と小文字、特殊文字を含める必要があります。
    • Connection Server のホスト名 (cs_fqdn) から Connection Server の IP アドレス (cs_ip) への解決。

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

  10. Horizon Edge Gateway の 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 Edge Gateway AMI が起動したら、AMI インスタンスの構成を編集し、起動スクリプトを削除します。
  12. Horizon Edge Gateway 仮想マシン AWS インスタンスに SSH 接続します。

    CLI または AWS マネジメント コンソールを使用するには、インスタンスへの接続の詳細について、Amazon Elastic Compute Cloud のドキュメントを参照してください。ペアリング キーのコピー/貼り付けを許可するには、SSH を使用することをお勧めします。

    詳細については、「Horizon Edge の SSH アクセスの有効化」を参照してください。

    関連情報については、AWS 製品ドキュメントの「Connect to your Linux instance」および「Connect to your Linux instance with EC2 Instance Connect」も参照してください。

  13. 次のコマンド形式を使用して pair-edge スクリプトを実行します。ここで、pairing_code は、「Horizon 8 のデプロイと Horizon Cloud Service - next-gen 制御プレーンで使用する Horizon Edge のデプロイ」で説明されている手順 9 のスクリーンショットからコピーしたペアリング コードです。

    sudo /opt/vmware/sbin/pair-edge.sh 'pairing_code'

  14. セキュリティを強化するには、これらの手順を完了したときに SSH を無効にすることを検討してください。
  15. Horizon Universal Console に戻り、Horizon Connection Server の詳細の構成を完了します。Horizon 8 のデプロイと Horizon Cloud Service - next-gen 制御プレーンで使用する Horizon Edge のデプロイを参照してください。