您可以下載 Horizon Edge 閘道,並將其部署到 Amazon Web Services (AWS) 中的 Horizon 8 同盟部署,以便與 Horizon Cloud Service - next-gen 配對。

必要條件

請遵循以下步驟,針對使用同盟架構在 VMware Cloud on AWS 中部署的網繭,下載並部署 Horizon Edge 閘道 應用裝置。在同盟架構中,您必須將 Horizon Edge 閘道 部署至 Horizon Cloud Service - next-gen 網繭環境內的原生 Amazon Elastic Computer Cloud (EC2) 基礎結構中。

  • 確認您已符合Horizon 8 Edge 部署中所述的 Horizon Edge 閘道相關先決條件。
  • 確認您已符合讓適當的目的地 URL 可供連線以在 Horizon 8 環境中部署 Horizon Edge 閘道中的需求,以使用 Horizon Edge 閘道Horizon 8 網繭與 Horizon Cloud Service 配對。
  • Horizon Edge 閘道 虛擬應用裝置必須連線至網際網路,才能與 Horizon Cloud 控制平面通訊。如果您的環境需要將 Proxy 伺服器和 Proxy 組態用於部署的應用裝置以連線至網際網路,請確認您已檢閱 Proxy 相關資訊、已知限制,以及搭配 Horizon Edge 閘道 應用裝置使用 Proxy 設定時的已知問題。
  • 如果想要在執行 pair-edge 指令碼時使用 Proxy,必須先執行以下命令,若 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'
    請參閱以下〈附註〉中的 Proxy 相關資訊。
    備註: 更新 Edge 中的 Proxy 組態
    /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 環境的詳細資訊,請參閱 Amazon Elastic Compute Cloud 說明文件,網址為 https://docs.aws.amazon.com/ec2/index.html。在後續步驟中,通常會建議要參考之特定類型的 Amazon Elastic Compute Cloud 說明文件。

程序

  1. 下載 Horizon Edge 閘道磁碟映像使用,做法是遵循步驟 7.使用 [下載] 來取得 Horizon Edge 閘道應用裝置二進位檔。 指示 (這項指示可在 部署 Horizon Edge 以用於 Horizon 8 部署和 Horizon Cloud Service - next-gen 控制平面 頁面上的程序中找到),並回應所有螢幕提示。

    Horizon Edge 閘道磁碟映像是以 VMDK 檔案形式提供。將 VMDK 檔案下載至您的本機系統。

    備註: 下載 Horizon Edge 閘道磁碟映像 2.3.3.0 版或更新版本,例如 edge-gw-2.3.3.0-22720582.ec2.vmdk

    將下載的二進位檔儲存到您要從中將二進位檔部署到所需虛擬化平台的位置,然後回到此步驟序列,以繼續執行所需的配對程序。

    將磁碟映像檔案上傳至 Amazon EC2 環境之前,您必須先建立一個 Amazon S3 值區。
  2. 在您的 Amazon EC2 環境中建立 Amazon S3 值區。如需詳細說明,請參閱 Amazon Elastic Compute Cloud 說明文件。
  3. 將下載的 VMDK 檔案上傳至您的 Amazon S3 值區。您可以使用 AWS 管理主控台或 AWS 命令列介面 (CLI) 來執行此步驟。
    • (AWS 管理主控台) 登入至 AWS 管理主控台以存取 Amazon EC2 環境。移至 S3 服務、選取您先前建立的值區,然後將 VMDK 檔案上傳至該值區。
    • (AWS CLI) 存取 AWS CLI 並執行下列命令。
      aws s3 cp <file-path-to-VMDK-file> <S3URI>

      如需關於執行 cp 命令的詳細資訊,請參閱 Amazon Elastic Compute Cloud 說明文件。

    在 AWS 管理主控台中,VMDK 檔案會在 物件索引標籤中列出。
  4. 建立一個服務角色和一個原則,並將該原則連結至該角色。
    1. 建立此程序所需三個新 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. 建立此程序所需三個新 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":"*"
              }
          ]
      }
    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. 建立此程序所需三個新 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>"
          }
      }
    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 工作的進度並取得快照識別碼,請執行下列命令。
    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 工作進度的輸出,並在工作完成時提供登錄映像所需的快照識別碼。例如。
    • "Progress": "43"。輸出中的行,例如此行指出 import-snapshot 工作的進度百分比。在此範例中,工作已完成 43%。
    • "Status": "completed"。輸出中的行,例如此行指出 import-snapshot 工作已完成。
    • "SnapshotId": "snap-06d42e043bxxxxxxx"。輸出中的行,例如工作完成後將納入此行。對於此範例,快照識別碼為 snap-06d42e043bxxxxxxx
  7. 記下 describe-import-snapshot-tasks 命令輸出中的快照識別碼。
  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 命令輸出中的快照識別碼。
    register-image 命令提供的輸出中包含 Amazon Machine Image (AMI) 的識別碼。下列範例是一般 register-image 輸出。
     {
            "ImageId": "ami-0721ee000321c4685"
        }
    register-image 命令輸出中指出的 AMI 也會顯示在 AMI 清單之間的 AWS 管理主控台中。
  9. 若要支援建立和設定 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
    在此範例中,指令碼支援下列組態:
    • 啟用透過 SSH 來存取 Horizon Edge 閘道 應用裝置。
    • 在應用裝置上建立 ccadmin 使用者帳戶,且其具有已定義的密碼 (<Mypassword>\n<Mypassword>)。請確定您定義了強式密碼。強式密碼至少為 8 個字元,並且必須包含一或多個數字、大小寫字母以及特殊字元。
    • 將連線伺服器主機名稱 (cs_fqdn) 解析為連線伺服器 IP 位址 (cs_ip)。

    您必須在下一個步驟中啟動 Horizon Edge 閘道 AMI 執行個體時,將此指令碼新增至 user-data 中。

  10. 啟動 Horizon Edge 閘道 的 AMI 執行個體。
    備註: 若要確保執行個體提供足夠的功能,請使用 c5.2xlarge 或更高型號。

    您可以使用 AWS 管理主控台或 CLI 來啟動執行個體。無論哪種情況,請使用 register-image 命令輸出中所提供的 Amazon Machine Image (AMI) 的識別碼,並將您在上一個步驟中準備的啟動指令碼新增至 user-data。

    備註: 您必須在此時新增啟動指令碼,因為 user-data 僅在 AMI 執行個體的第一次開機順序中執行。

    若要使用 CLI,請參閱 Amazon Elastic Compute Cloud 說明文件以瞭解關於執行 run-instances 命令的詳細資料。

    若要使用 AWS 管理主控台,請參閱 Amazon Elastic Compute Cloud 說明文件以瞭解相關詳細資料,例如使用啟動執行個體精靈啟動執行個體的相關資訊。

    如果您選擇使用 AWS 管理主控台來啟動執行個體,請依映像識別碼找出新的 AMI,接著選取該 AMI,然後按一下啟動。接下來,您可以繼續透過精靈提供部署的詳細資訊。

  11. Horizon Edge 閘道 AMI 啟動後,編輯 AMI 執行個體的組態,並移除啟動指令碼。
  12. 透過 SSH 連線至 Horizon Edge 閘道虛擬機器 AWS 執行個體。

    若要使用 CLI 或 AWS 管理控制台,請參閱 Amazon Elastic Compute Cloud 說明文件,以取得有關連線至執行個體的詳細資料。我們建議使用 SSH,以允許複製貼上配對金鑰。

    如需相關資訊,請參閱 為 Horizon Edge 啟用 SSH 存取

    如需相關資訊,另請參閱 AWS 產品說明文件中的連線至 Linux 執行個體使用 EC2 Instance Connect 連線至 Linux 執行個體

  13. 使用以下命令格式,執行配對 Edge 指令碼,其中,pairing_code 是您從部署 Horizon Edge 以用於 Horizon 8 部署和 Horizon Cloud Service - next-gen 控制平面中所述步驟 9 螢幕擷取畫面中複製的配對代碼:

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

  14. 為了提高安全性,請考慮在完成這些步驟後停用 SSH。
  15. 返回 Horizon Universal Console,以完成 Horizon Connection Server 詳細資料的設定。請參閱部署 Horizon Edge 以用於 Horizon 8 部署和 Horizon Cloud Service - next-gen 控制平面