オフライン評価用に EC2 VM からゲストデータを収集する


このチュートリアルでは、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

  1. mcdc CLI をダウンロードして実行する Linux マシンを準備します。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. mcdc CLI をダウンロードして実行する Linux マシンを準備します。Linux マシンは、次の最小要件を満たしている必要があります。

    • Linux カーネル バージョン 2.6.23 以降
    • 4 GB の RAM および 10 GB のディスク容量
    • AWS CLI がインストールされていること
    • EC2 インスタンスへのネットワーク接続(プロキシ経由など)
  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 CLI のプロンプトで、アクセスキー ID とシークレット アクセス キーの入力を求められます。

    検出コマンドの出力は次のようになります。

    Collected 166 VMs
    [✓] Collection completed.
    

ゲスト検出を実行する

Session Manager または SSH を使用してゲスト検出を行います。

Session Manager

この方法では、AWS Systems Manager Session Manager を使用して、SSM エージェントがインストールされているすべての VM でゲスト検出を実行します。SSM エージェントは、Amazon から提供されるほとんどの AMI にデフォルトでインストールされています。他の AMI には手動でインストールできます。

  1. すべての VM に、Session Manager を使用した接続を許可する IAM ロールがあることを確認します。詳細については、AWS のドキュメントをご覧ください。

  2. 収集するすべての VM がオンになっていることを確認します。

  3. 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 を使用したパスワード認証や秘密鍵などの代替認証方法を使用するようにスクリプトを調整するのは簡単です。

  1. VM へのネットワーク アクセスが可能であることを確認します。必要に応じて、セキュリティ グループのインバウンド ルールを調整するか、プロキシを使用して接続してください。

  2. 収集元のすべての VM がオンになっていることを確認します。

  3. GitHub の Migrate to Containers リポジトリから 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 プロキシを使用するには、次のコマンドを実行します。

      ./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
     

(上級)ニーズに合わせてスクリプトを変更する

どちらのスクリプトもニーズに合っていない可能性があります。たとえば、一部のインスタンスに SSM エージェントや VM の接続がインストールされていない可能性があります。

このような場合、通常はマシンに接続する標準的な方法です。これらのメソッドを大規模にオーケストレートできるようにスクリプトを作成することをおすすめします。これらのスクリプトは、ゼロから作成する場合もあれば、既存のスクリプトを変更できる場合もあります。

たとえば、パブリック IP アドレスではなくプライベート アドレスを使用するように SSH 収集スクリプトを変更できます。

スクリプトは、内容を理解しやすいようにコメント化されています。

(上級)オーケストレーション スクリプトをゼロから作成する

大規模なゲスト検出とデータ収集をオーケストレートするには、次のようにします。

  1. 収集するすべての VM を特定します。
  2. 各 VM にゲスト収集スクリプトをアップロードします。Linux VM と Windows VM には、それぞれ異なるゲスト収集スクリプトが必要です。
  3. 各 VM でゲスト収集スクリプトを実行します。
  4. 作成されたアーティファクトを各 VM からダウンロードします。
  5. ダウンロードしたゲスト収集スクリプトを mcdc CLI にインポートします。

この大半は一から記述しなければならないかもしれませんが、スクリプトの例では、いくつかのタスクに役立つ構成要素があります。次に例を示します。

次のステップ