このチュートリアルでは、Migration Center のディスカバリー クライアント CLI を使用したオフライン技術評価に使用される EC2 仮想マシン(VM)インスタンスでデータを検出して収集するプロセスについて説明します。
目標
このチュートリアルの学習内容は次のとおりです。
mcdc
CLI をダウンロードして AWS EC2 VM を評価する。- AWS EC2 インベントリ検出を実行する。
- AWS Session Manager または SSH を使用して EC2 リージョン内のすべての VM に関するゲストレベルの情報を収集する。
- オフライン評価レポートを生成する。
- (上級)ニーズに合わせてスクリプトを変更する。
- (上級)オーケストレーション スクリプトをゼロから作成する。
費用
このチュートリアルでは、Google Cloud の費用は発生しません。
AWS の費用にも影響はない可能性があります。
始める前に
前提条件は、EC2 VM に接続する方法によって異なります。
Session Manager
mcdc
CLI をダウンロードして実行する Linux マシンを準備します。Linux マシンは、次の最小要件を満たしている必要があります。- Linux カーネル バージョン 2.6.23 以降
- 4 GB の RAM および 10 GB のディスク容量
- AWS CLI がインストールされていること
AWS CLI に次の権限があること
aws ssm describe-instance-information
の呼び出しaws ssm start-session
の呼び出し
SSH
mcdc
CLI をダウンロードして実行する Linux マシンを準備します。Linux マシンは、次の最小要件を満たしている必要があります。- Linux カーネル バージョン 2.6.23 以降
- 4 GB の RAM および 10 GB のディスク容量
- AWS CLI がインストールされていること
- EC2 インスタンスへのネットワーク接続(プロキシ経由など)
AWS CLI に次の権限があること
aws ec2 describe-instances
の呼び出し- インスタンス接続
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
CLI のプロンプトで、アクセスキー ID とシークレット アクセス キーの入力を求められます。検出コマンドの出力は次のようになります。
Collected 166 VMs [✓] Collection completed.
ゲスト検出を実行する
Session Manager または SSH を使用してゲスト検出を行います。
Session Manager
この方法では、AWS Systems Manager Session Manager を使用して、SSM エージェントがインストールされているすべての VM でゲスト検出を実行します。SSM エージェントは、Amazon から提供されるほとんどの AMI にデフォルトでインストールされています。他の AMI には手動でインストールできます。
すべての VM に、Session Manager を使用した接続を許可する IAM ロールがあることを確認します。詳細については、AWS のドキュメントをご覧ください。
収集するすべての VM がオンになっていることを確認します。
GitHub の Migrate to Containers リポジトリから 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 instance connect が使用されます。インスタンス接続は、Amazon Linux と Ubuntu の VM でのみ使用できます。また、インストールが必要になる場合があります。ただし、sshpass を使用したパスワード認証や秘密鍵などの代替認証方法を使用するようにスクリプトを調整するのは簡単です。
VM へのネットワーク アクセスが可能であることを確認します。必要に応じて、セキュリティ グループのインバウンド ルールを調整するか、プロキシを使用して接続してください。
収集元のすべての VM がオンになっていることを確認します。
GitHub の Migrate to Containers リポジトリから 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 プロキシを使用するには、次のコマンドを実行します。./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
(上級)ニーズに合わせてスクリプトを変更する
どちらのスクリプトもニーズに合っていない可能性があります。たとえば、一部のインスタンスに SSM エージェントや VM の接続がインストールされていない可能性があります。
このような場合、通常はマシンに接続する標準的な方法です。これらのメソッドを大規模にオーケストレートできるようにスクリプトを作成することをおすすめします。これらのスクリプトは、ゼロから作成する場合もあれば、既存のスクリプトを変更できる場合もあります。
たとえば、パブリック IP アドレスではなくプライベート アドレスを使用するように SSH 収集スクリプトを変更できます。
スクリプトは、内容を理解しやすいようにコメント化されています。
(上級)オーケストレーション スクリプトをゼロから作成する
大規模なゲスト検出とデータ収集をオーケストレートするには、次のようにします。
- 収集するすべての VM を特定します。
- 各 VM にゲスト収集スクリプトをアップロードします。Linux VM と Windows VM には、それぞれ異なるゲスト収集スクリプトが必要です。
- 各 VM でゲスト収集スクリプトを実行します。
- 作成されたアーティファクトを各 VM からダウンロードします。
- ダウンロードしたゲスト収集スクリプトを
mcdc
CLI にインポートします。
この大半は一から記述しなければならないかもしれませんが、スクリプトの例では、いくつかのタスクに役立つ構成要素があります。次に例を示します。
- EC2 のすべての VM での反復処理。
- Windows および Linux ゲスト収集スクリプトのダウンロード。
- ファイルのアップロードとダウンロードができない場合があります。そのような場合は、send コマンドに収集スクリプトを含め、base64 でエンコードされたアーティファクトを stdout に書き込むことができます。その方法については、SSM 収集スクリプトをご覧ください。
- 収集したアーティファクトの
mcdc
CLI へのインポート。
次のステップ
mcdc
CLI の詳細を確認する。- スクリプトのサンプルを見る。
- Migrate to Containers GitHub リポジトリにある Spring フレームワーク アプリケーションの移行に関するチュートリアルで、より複雑なアプリケーションを移行する方法を学習する。
- 計画のベスト プラクティスについて学習する。