本教學課程將逐步說明如何在 EC2 虛擬機器 (VM) 執行個體上探索及收集資料,以便使用 Migration Center 探索用戶端 CLI 進行離線技術評估。
目標
您在本教學課程中將學習以下內容:
- 下載
mcdc
CLI 來評估 AWS EC2 VM。 - 執行 AWS EC2 資產探索。
- 使用 AWS 工作階段管理工具或 SSH,收集 EC2 區域中所有 VM 的訪客層級資訊。
- 產生離線評估報表。
- (進階) 視需要修改指令碼。
- (進階) 從頭開始編寫自動化調度管理指令碼。
費用
本教學課程不會產生費用。 Google Cloud
這不會影響您的 AWS 費用。
事前準備
必備條件取決於您連線至 EC2 VM 的方式。
工作階段管理工具
準備 Linux 機器,以便下載及執行
mcdc
CLI。Linux 機器必須符合下列最低需求:- Linux 核心 2.6.23 以上版本
- 4 GB RAM 和 10 GB 磁碟空間
- 已安裝 AWS CLI
請確認 AWS CLI 具備下列權限:
- 可呼叫
aws ssm describe-instance-information
- 可呼叫
aws ssm start-session
- 可呼叫
安全殼層 (SSH)
準備 Linux 機器,以便下載及執行
mcdc
CLI。Linux 機器必須符合下列最低需求:- Linux 核心 2.6.23 以上版本
- 4 GB RAM 和 10 GB 磁碟空間
- 已安裝 AWS CLI
- 與 EC2 執行個體的網路連線 (可能會透過 Proxy)
請確認 AWS CLI 具備下列權限:
- 可呼叫
aws ec2 describe-instances
- Instance Connect
- 可呼叫
下載 mcdc
CLI
- 連線至 Linux 機器:
ssh MACHINE_IP
請將 MACHINE_IP 替換為 Linux 機器的 IP 位址。
- 下載最新版的
mcdc
CLI,並將其設為可執行:curl -O "https://mcdc-release.storage.googleapis.com/$(curl -s https://mcdc-release.storage.googleapis.com/latest)/mcdc" chmod +x mcdc
- 將
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 上。
請確認所有 VM 都具有可透過 Session Manager 連線的 IAM 角色。詳情請參閱 AWS 說明文件。
確認所有要收集的 VM 都已開啟。
使用 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 或私密金鑰進行密碼驗證。
確認您可以存取 VM 的網路。您可能需要調整安全性群組的入站規則,或使用 Proxy 進行連線。
確認您要收集資料的所有 VM 都已開啟。
使用 GitHub 遷移至容器存放區中的 ssh 訪客收集指令碼執行訪客探索作業。
下載指令碼:
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
執行指令碼並將輸出內容儲存到檔案:
./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 替換為通訊埠編號。
如果您在步驟 1 中調整了內送規則,請考慮還原變更。
產生離線評估報表
收集所有資料後,您可以產生詳細的 HTML 報表:
./mcdc report --format html --full > REPORT_NAME.html
(進階) 視需要修改指令碼
兩個指令碼可能都不完全符合您的需求。舉例來說,您可能未在部分 VM 上安裝 SSM 代理程式或執行個體連線。
在這種情況下,您通常會使用標準方式連線至機器。建議您編寫指令碼,以便大規模地協調這些方法。在某些情況下,您可能需要從頭開始編寫這些指令碼,但在其他情況下,您可以修改現有的指令碼。
舉例來說,您可以修改 SSH 收集指令碼,改為使用私人 IP 位址,而非公開 IP 位址。
這些指令碼都附有大量註解,方便您瞭解內容。
(進階) 從頭開始編寫自動化調度管理指令碼
如要大規模安排客人探索和資料收集作業,請按照下列步驟操作:
- 找出要收集資料的所有 VM。
- 將訪客收集指令碼上傳至每個 VM。Linux 和 Windows VM 需要不同的訪客收集指令碼。
- 在每個 VM 上執行訪客收集指令碼。
- 從每個 VM 下載已建立的構件。
- 將下載的訪客收集指令碼匯入
mcdc
CLI。
雖然您可能經常需要從頭開始編寫大部分內容,但範例指令碼中有一些實用的構件,或許能協助您完成其中部分工作。例如:
- 遍歷 EC2 中的所有 VM。
- 下載 Windows 和 Linux 訪客收集指令碼。
- 有時你可能無法上傳及下載檔案。在這種情況下,您可以在傳送的指令中加入收集指令碼,並將 base64 編碼的成品寫入 stdout。SSM 收集指令碼可做為這項操作實用的範例。
- 將收集到的構件匯入
mcdc
CLI。
後續步驟
- 進一步瞭解
mcdc
CLI。 - 查看指令碼範例。
- 如要瞭解如何遷移更複雜的應用程式,請參閱「Migrate to Containers」GitHub 存放區中的遷移 Spring 架構應用程式教學課程。
- 瞭解規劃最佳做法。