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 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 バケットを作成する必要があります。
- Amazon EC2 環境で Amazon S3 バケットを作成します。詳細な手順については、Amazon Elastic Compute Cloud のドキュメントを参照してください。
- ダウンロードした VMDK ファイルを Amazon S3 バケットにアップロードします。この手順は、AWS マネジメント コンソールまたは AWS コマンドライン インターフェイス (CLI) を使用して実行できます。
AWS マネジメント コンソールでは、VMDK ファイルは
[オブジェクト] タブに表示されます。
- サービス ロールとポリシーを作成し、ポリシーをロールに添付します。
- この手順に必要な 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"
}
}
}
]
}
- 任意の名前でサービス ロールを作成し、新しい 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 つの新しい 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":"*"
}
]
}
- ポリシーを作成し、新しいロールに添付して、新しく作成した 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 のドキュメントを参照してください。
- インポートされた VMDK ファイルからスナップショットをインポートします。
- この手順に必要な 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>"
}
}
- コマンドを実行して、インポートした 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
}
}
- import-snapshot コマンド出力の
ImportTaskId
値を書き留めます。
- 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
です。
- describe-import-snapshot-tasks コマンドの出力からスナップショット ID を書き留めます。
- スナップショット イメージを登録するには、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 のリストの中にも表示されます。
- 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 インスタンスを起動する次の手順で、このスクリプトをユーザー データに追加する必要があります。
- 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 を選択し、[起動] をクリックします。その後、デプロイの詳細を指定してウィザードを続行できます。
- Horizon Edge Gateway AMI が起動したら、AMI インスタンスの構成を編集し、起動スクリプトを削除します。
- Horizon Edge Gateway 仮想マシン AWS インスタンスに SSH 接続します。
- 次のコマンド形式を使用して pair-edge スクリプトを実行します。ここで、pairing_code は、「Horizon 8 のデプロイと Horizon Cloud Service - next-gen 制御プレーンで使用する Horizon Edge のデプロイ」で説明されている手順 9 のスクリーンショットからコピーしたペアリング コードです。
sudo /opt/vmware/sbin/pair-edge.sh 'pairing_code'
- セキュリティを強化するには、これらの手順を完了したときに SSH を無効にすることを検討してください。
- Horizon Universal Console に戻り、Horizon Connection Server の詳細の構成を完了します。Horizon 8 のデプロイと Horizon Cloud Service - next-gen 制御プレーンで使用する Horizon Edge のデプロイを参照してください。