從 EC2 虛擬機器收集訪客資料,以便進行離線評估


本教學課程將逐步說明如何在 EC2 虛擬機器 (VM) 執行個體上探索及收集資料,以便使用 Migration Center 探索用戶端 CLI 進行離線技術評估。

目標

您在本教學課程中將學習以下內容:

  • 下載 mcdc CLI 來評估 AWS EC2 VM。
  • 執行 AWS EC2 資產探索。
  • 使用 AWS 工作階段管理工具或 SSH,收集 EC2 區域中所有 VM 的訪客層級資訊。
  • 產生離線評估報表。
  • (進階) 視需要修改指令碼。
  • (進階) 從頭開始編寫自動化調度管理指令碼。

費用

本教學課程不會產生費用。 Google Cloud

這不會影響您的 AWS 費用。

事前準備

必備條件取決於您連線至 EC2 VM 的方式。

工作階段管理工具

  1. 準備 Linux 機器,以便下載及執行 mcdc CLI。Linux 機器必須符合下列最低需求:

    • Linux 核心 2.6.23 以上版本
    • 4 GB RAM 和 10 GB 磁碟空間
    • 已安裝 AWS CLI
  2. 請確認 AWS CLI 具備下列權限:

    • 可呼叫 aws ssm describe-instance-information
    • 可呼叫 aws ssm start-session

安全殼層 (SSH)

  1. 準備 Linux 機器,以便下載及執行 mcdc CLI。Linux 機器必須符合下列最低需求:

    • Linux 核心 2.6.23 以上版本
    • 4 GB RAM 和 10 GB 磁碟空間
    • 已安裝 AWS CLI
    • 與 EC2 執行個體的網路連線 (可能會透過 Proxy)
  2. 請確認 AWS CLI 具備下列權限:

下載 mcdc CLI

  1. 連線至 Linux 機器:
    ssh MACHINE_IP

    請將 MACHINE_IP 替換為 Linux 機器的 IP 位址。

  2. 下載最新版的 mcdc CLI,並將其設為可執行:
      curl -O "https://mcdc-release.storage.googleapis.com/$(curl -s https://mcdc-release.storage.googleapis.com/latest)/mcdc"
      chmod +x mcdc
  3. mcdc CLI 新增至殼層路徑:
    PATH=$PATH:`pwd`

執行 AWS 商品目錄探索作業

  • 執行廣告空間探索:

    ./mcdc discover aws -r REGION
    

    REGION 替換為 EC2 VM 的區域。

    mcdc 命令列會提示您輸入存取金鑰 ID 和私密存取金鑰

    discover 指令的輸出內容如下所示:

    Collected 166 VMs
    [✓] Collection completed.
    

執行訪客探索

您可以使用 Session Manager 或 SSH 執行訪客探索。

工作階段管理工具

這個方法會使用 AWS Systems Manager Session Manager,在所有已安裝 SSM 代理程式 的 VM 上執行訪客探索作業。根據預設,SSM 代理程式會安裝在大多數 Amazon 提供的 AMI 上,但也可以手動安裝在其他 AMI 上。

  1. 請確認所有 VM 都具有可透過 Session Manager 連線的 IAM 角色。詳情請參閱 AWS 說明文件

  2. 確認所有要收集的 VM 都已開啟。

  3. 使用 GitHub 遷移至容器存放區中的 ssm 訪客收集指令碼,執行訪客探索作業。

    a. 下載指令碼:

     curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/migrate-to-containers/main/scripts/mcdc/mcdc_collect_aws_guest_ssm.sh
     chmod +x mcdc_collect_aws_guest_ssm.sh
    

    b. 執行指令碼並將輸出內容儲存到檔案:

     ./mcdc_collect_aws_guest_ssm.sh --region REGION
    

    REGION 替換為 EC2 VM 的區域。

    所有旗標都會直接傳遞至 aws ssm describe-instance-information。如要從特定 VM 收集資料,請執行下列指令:

     ./mcdc_collect_aws_guest_ssm.sh --region REGION --filters "Key=InstanceIds,Values=VM_ID"
    

    VM_ID 替換為 VM ID。

    如要進一步瞭解 describe-instance-information 指令允許使用的所有旗標,請參閱 AWS 說明文件

安全殼層 (SSH)

這個方法會使用 SSH 在 Linux VM 上執行訪客探索。並連線至每個 VM 的公開 IP 位址。不過,修改指令碼應該很簡單。例如連線至私人 IP 位址

這個指令碼會使用 EC2 執行個體連線進行驗證。執行個體連線功能僅適用於 Amazon Linux 和 Ubuntu VM,且可能需要安裝。不過,只要調整指令碼,即可輕鬆使用其他驗證方法,例如使用 sshpass 或私密金鑰進行密碼驗證。

  1. 確認您可以存取 VM 的網路。您可能需要調整安全性群組的入站規則,或使用 Proxy 進行連線。

  2. 確認您要收集資料的所有 VM 都已開啟。

  3. 使用 GitHub 遷移至容器存放區中的 ssh 訪客收集指令碼執行訪客探索作業。

    1. 下載指令碼:

      curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/migrate-to-containers/main/scripts/mcdc/mcdc_collect_aws_guest_ssh.sh
      chmod +x mcdc_collect_aws_guest_ssh.sh
      
    2. 執行指令碼並將輸出內容儲存到檔案:

      ./mcdc_collect_aws_guest_ssh.sh --region REGION
      

      REGION 替換為 EC2 VM 的區域。

      任何名為 -a--ssh-arg 的旗標都會直接傳遞至 SSH。如要停用嚴格主機金鑰驗證,請執行下列指令:

      ./mcdc_collect_aws_guest_ssh.sh --region REGION -a '-o StrictHostKeyChecking=no'
      

      所有其他標記都會直接傳遞至 aws ssh describe-instances。如要從特定 VM 收集資料,請執行下列指令:

      ./mcdc_collect_aws_guest_ssm.sh --region REGION --instance-ids VM_ID
      

      VM_ID 替換為 VM ID。

      如要瞭解所有允許的旗標,請參閱 AWS 說明文件

      您可以使用代理程式,透過 SSH ProxyCommand 選項連線至 VM。舉例來說,如要使用位於 PROXY_PORT 的現有 Socks5 Proxy,請執行下列指令:

      ./mcdc_collect_aws_guest_ssh.sh --region REGION -a '-o ProxyCommand=nc -X 5 -x 127.0.0.1:PROXY_PORT %h %p'
      

      PROXY_PORT 替換為通訊埠編號。

  4. 如果您在步驟 1 中調整了內送規則,請考慮還原變更。

產生離線評估報表

  • 收集所有資料後,您可以產生詳細的 HTML 報表:

    ./mcdc report --format html --full > REPORT_NAME.html
     

(進階) 視需要修改指令碼

兩個指令碼可能都不完全符合您的需求。舉例來說,您可能未在部分 VM 上安裝 SSM 代理程式或執行個體連線。

在這種情況下,您通常會使用標準方式連線至機器。建議您編寫指令碼,以便大規模地協調這些方法。在某些情況下,您可能需要從頭開始編寫這些指令碼,但在其他情況下,您可以修改現有的指令碼。

舉例來說,您可以修改 SSH 收集指令碼,改為使用私人 IP 位址,而非公開 IP 位址。

這些指令碼都附有大量註解,方便您瞭解內容。

(進階) 從頭開始編寫自動化調度管理指令碼

如要大規模安排客人探索和資料收集作業,請按照下列步驟操作:

  1. 找出要收集資料的所有 VM。
  2. 將訪客收集指令碼上傳至每個 VM。Linux 和 Windows VM 需要不同的訪客收集指令碼。
  3. 在每個 VM 上執行訪客收集指令碼。
  4. 從每個 VM 下載已建立的構件。
  5. 將下載的訪客收集指令碼匯入 mcdc CLI。

雖然您可能經常需要從頭開始編寫大部分內容,但範例指令碼中有一些實用的構件,或許能協助您完成其中部分工作。例如:

後續步驟