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

このチュートリアルでは、移行センターのディスカバリー クライアント CLI を使用したオフライン技術評価に使用される EC2 仮想マシン(VM)インスタンスでデータを検出して収集するプロセスについて説明します。

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 とシークレット アクセス キーの入力を求められます。

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

    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 にインポートします。

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