Horizon Edge 게이트웨이를 다운로드하여 AWS(Amazon Web Services)의 Horizon 8 페더레이션된 배포에 배포하고 Horizon Cloud Service - next-gen과 연결할 수 있습니다.
사전 요구 사항
이러한 단계에 따라 VMware Cloud on AWS와 페더레이션된 아키텍처를 사용하는 포드 배포에 Horizon Edge 게이트웨이 장치를 다운로드하고 배포합니다. 페더레이션된 아키텍처에서 Horizon Cloud Service - next-gen의 포드 환경 내의 기본 Amazon EC2(Elastic Computer Cloud) 인프라에 Horizon Edge 게이트웨이를 배포해야 합니다.
프로시저
- Horizon Edge 게이트웨이 디스크 이미지를 다운로드합니다. 이 작업을 수행하려면 7단계. 다운로드를 사용하여 Horizon Edge 게이트웨이 장치 바이너리를 가져오기 지침(Horizon 8 배포 및 Horizon Cloud Service - next-gen 제어부에서 사용하기 위해 Horizon Edge 배포 페이지 참조)을 따르고 모든 화면 지시에 응답하십시오.
Horizon Edge 게이트웨이 디스크 이미지는 VMDK 파일로 사용할 수 있습니다. 로컬 시스템에 VMDK 파일을 다운로드합니다.
참고:
Horizon Edge 게이트웨이 디스크 이미지 버전 2.3.3.0 이상을 다운로드합니다(예:
edge-gw-2.3.3.0-22720582.ec2.vmdk
).
다운로드한 바이너리를 원하는 가상화 플랫폼에 배포할 위치에 저장한 다음, 이 단계 순서로 돌아가 필요한 연결 프로세스를 계속합니다.
디스크 이미지 파일을 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 파일 중 두 번째 파일을 생성합니다.
VMDK 파일을 업로드할 버켓의 이름(예: 다음 예에서 사용되는 이름,
<bucket-name>)을 제공합니다.
이 특정 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 파일 중 세 번째 파일을 생성합니다.
파일에 다음 정보를 포함합니다.
- 다음 예에서 사용되는 버켓 이름(예: <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 명령은 AMI(Amazon 시스템 이미지)의 ID를 포함하는 출력을 제공합니다. 다음 예는 일반적인
register-image 출력입니다.
{
"ImageId": "ami-0721ee000321c4685"
}
register-image 명령 출력에 표시된 AMI는 AWS 관리 콘솔의 AMI 목록에도 나타납니다.
- Horizon Edge 게이트웨이 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 게이트웨이 장치에 SSH 액세스 사용
- 정의된 암호(<Mypassword>\n<Mypassword>)를 사용하여 장치에서
ccadmin
사용자 계정 생성. 강력한 암호를 정의해야 합니다. 강력한 암호는 8자 이상이며 1자 이상의 숫자, 대/소문자 및 특수 문자를 포함해야 합니다.
- 연결 서버 호스트 이름(cs_fqdn)에서 연결 서버 IP 주소(cs_ip) 확인
Horizon Edge 게이트웨이 AMI 인스턴스를 실행하는 다음 단계에서 user-data에 이 스크립트를 추가해야 합니다.
- Horizon Edge 게이트웨이의 AMI 인스턴스를 시작합니다.
참고: 인스턴스가 충분한 기능을 제공하도록 하려면 모델 c5.2xlarge 이상을 사용합니다.
AWS 관리 콘솔 또는 CLI를 사용하여 인스턴스를 시작할 수 있습니다. 두 경우 모두 register-image 명령 출력에 제공된 AMI(Amazon 시스템 이미지)의 ID를 사용하고 이전 단계에서 준비한 시작 스크립트를 user-data에 추가합니다.
참고: user-data는 AMI 인스턴스의 첫 번째 부팅 순서에만 실행되기 때문에 지금 시작 스크립트를 추가해야 합니다.
CLI를 사용하려면 Amazon Elastic Compute Cloud 설명서에서 run-instances 명령 실행에 대한 자세한 내용을 참조하십시오.
AWS 관리 콘솔을 사용하려면 Amazon Elastic Compute Cloud 설명서에서 인스턴스 시작 마법사를 사용하여 인스턴스를 시작하는 것과 같은 자세한 내용을 참조하십시오.
AWS 관리 콘솔을 사용하여 인스턴스를 시작하도록 선택하려면 이미지 ID로 새 AMI를 찾고 AMI를 선택한 다음 시작을 클릭합니다. 그런 다음, 배포에 대한 세부 정보를 제공하는 마법사를 계속 진행할 수 있습니다.
- Horizon Edge 게이트웨이 AMI가 시작된 후 AMI 인스턴스의 구성을 편집하고 시작 스크립트를 제거합니다.
- Horizon Edge 게이트웨이 VM AWS 인스턴스에 대해 SSH를 사용합니다.
- 다음 명령 형식을 사용하여 Edge 연결 스크립트를 실행합니다. 여기서 pairing_code는 Horizon 8 배포 및 Horizon Cloud Service - next-gen 제어부에서 사용하기 위해 Horizon Edge 배포:
sudo /opt/vmware/sbin/pair-edge.sh 'pairing_code'
에 설명된 9단계 스크린샷에서 복사한 연결 코드입니다.
- 보안을 강화하려면 다음 단계를 완료한 경우 SSH를 비활성화하는 것이 좋습니다.
- Horizon Universal Console로 돌아가서 Horizon Connection Server 세부 정보의 구성을 완료합니다. Horizon 8 배포 및 Horizon Cloud Service - next-gen 제어부에서 사용하기 위해 Horizon Edge 배포 항목을 참조하십시오.