ゲスト検出とデータ収集を一括で行う


このチュートリアルでは、Migration Center ディスカバリー クライアント CLI のゲスト検出を使用して、多くの VMware 仮想マシン(VM)インスタンスに対して検出とデータ収集を行うプロセスについて説明します。大量の VM をモニタリングし、トラブルシューティングするのは難しい場合があります。処理の単位は 1,000 台未満の小さなグループにすることをおすすめします。

目標

このチュートリアルの学習内容は次のとおりです。

  • mcdc CLI をダウンロードする。
  • VMware インベントリ検出を実行する。
  • 検出されたすべての VM を含む CSV ファイルを生成する。
  • VM のサブセットを含む複数の CSV ファイルに分割する。
  • CSV ファイル内のすべての VM に対してゲスト検出を実行する。
  • オフライン評価レポートを生成する。

費用

このチュートリアルではオンプレミス リソースを使用します。Google Cloud の費用は発生しません。

始める前に

  1. mcdc CLI をインストールして実行する Linux マシンを準備します。Linux マシンは、次の最小要件を満たしている必要があります。

    • glibc バージョン 2.25 以降
    • 4 GB の RAM および 10 GB のディスク容量
    • vCenter と ESX ホストへのネットワーク接続
  2. 次の必須権限を持つ vSphere ユーザーが存在することを確認します。

    • VM に対する読み取り権限
    • すべての ESX ホストに対する読み取り権限
    • ゲスト オペレーションの変更
    • ゲスト オペレーション プログラムの実行
    • ゲスト オペレーション クエリ

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`
    

VMware インベントリ検出を実行する

  • インベントリ検出を実行します。

    ./mcdc discover vsphere -u USERNAME --url https://VSPHERE_URL
    

    次のように置き換えます。

    • USERNAME: vCenter ユーザー名
    • VSPHERE_URL: vCenter Server インスタンスまたは vSphere Client の URL

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

    [+] Found 528 VMs
    Collecting data...
    528 / 528 [---------------------------------------------------] 100.00% 5 p/s
    [✓] Collection completed.
    

検出されたすべての VM を含む CSV ファイルを生成する

CSV ファイルを生成するには、GitHub の Migrate to Containers リポジトリにある export スクリプトを使用します。


vms=$(mcdc report --format csv | tail -n +2 | awk -F ',' '{; print $2";"$3";"$4";;;"}')
printf "%s\n" "Name;Platform VM ID;OS Family;IP;USERNAME;PASSWORD"
printf "%s\n" "$vms"

このスクリプトは、report コマンドを使用して、前の手順で検出されたすべての VM を含む CSV ファイルを生成します。

  1. スクリプトをダウンロードします。

    curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/migrate-to-containers/main/scripts/mcdc/mcdc_discovery_export_guest_tools.sh
    chmod +x mcdc_discovery_export_guest_tools.sh
    
  2. スクリプトを実行し、出力をファイルに保存します。

    ./mcdc_discovery_export_guest_tools.sh > VMS_CSV_FILE
    

    VMS_CSV_FILE は、CSV ファイルの名前に置き換えます。

VM のサブセットを含む複数の CSV ファイルに分割する

大きな CSV ファイルを小さな CSV ファイルに分割するには、GitHub の Migrate to Containers リポジトリにある splitter スクリプトを使用します。

tail -n +2 $1 | split -d -l $num_of_lines - $2
for file in $2*
do
    head -n 1 $1 > tmp_file
    cat "$file" >> tmp_file
    mv -f tmp_file "$file"
done
  1. スクリプトをダウンロードします。

    curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/migrate-to-containers/main/scripts/mcdc/csv_splitter.sh
    chmod +x csv_splitter.sh
    
  2. スクリプトを実行します。

    ./csv_splitter.sh VMS_CSV_FILE CSV_FILES_PREFIX LINES_PER_FILE VMS_CSV_FILE CSV_FILES_PREFIX
    

    次のように置き換えます。

    • VMS_CSV_FILE - 分割する入力 CSV ファイル。
    • CSV_FILES_PREFIX - 生成される CSV ファイルの接頭辞。
    • LINES_PER_FILE - 生成される CSV ファイルあたりの行数。デフォルト値は 10 です。

    このスクリプトはさまざまな CSV ファイルを生成します。

  3. 生成された CSV ファイルのリストを表示します。

    ls -lrt CSV_FILES_PREFIX*
    

CSV ファイル内のすべての VM に対してゲスト検出を実行する

CSV ファイル内の VM に対してゲスト検出を実行するには、Migrate to Containers GitHub リポジトリの collection スクリプトを使用します。

前の手順で生成した CSV ファイルごとに、この手順を繰り返します。


url_regex='^https?://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]\.[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]$'

read -r -p "CSV file name: " CSV_FILE
if [[ ! -r "$CSV_FILE" ]]; then
    echo "The file $CSV_FILE does not exist or can not be accessed."
    exit 1
fi

read -r -p "vSphere URL: " VSPHERE_URL
if ! [[ $VSPHERE_URL =~ $url_regex ]]; then
    echo "vSphere URL $VSPHERE_URL IS not a valid URL"
    exit 1
fi
read -r -p "vSphere username: " VSPHERE_USER
read -r -s -p "vSphere password: " VSPHERE_PASSWORD
echo ""
read -r -p "Default username: " DEFAULT_USER
read -r -s -p "Default password: " DEFAULT_PASSWORD

echo ""

# CSV fields
#NAME;PLATFORM VM ID;OS;IP;USERNAME;PASSWORD
while IFS=";" read -r vm_name vm_id os ip username password
do
   if [ -z "$username" ]
    then
      username=$DEFAULT_USER
    fi
    if [ -z "$password" ]
    then
          password=$DEFAULT_PASSWORD
    fi

    if [ ! -z "$vm_id" ]
    then
      # Note that the below only works for VMWare VMs
      # vm_id after the last slash if prefixed by vSphere IP
      mod_vm_id=$(echo "$vm_id" | sed 's/.*\///')
      mcdc discover vsphere guest --url $VSPHERE_URL -u $VSPHERE_USER -p $VSPHERE_PASSWORD --vm-user $username --vm-password $password $mod_vm_id
    else
      echo "Skipping VM: $vm_name because it has no VM ID"
    fi
 done < <(tail -n +1 $CSV_FILE)

このスクリプトは、discover vsphere guest コマンドを使用して VM にゲスト収集スクリプトをアップロードし、実行します。

このスクリプトをバックグラウンドで実行し、出力をログファイルに書き出すことをおすすめします。そのためには、スクリプトに入力として渡されるテキスト ファイルを作成する必要があります。

  1. 次のテキスト ファイルを作成します。

    cat <<EOF >> INPUT_FILE
    CSV_FILES_PREFIXCSV_FILE_SUFFIX
    VSPHERE_URL
    VSPHERE_USER
    VSPHERE_PASSWORD
    VM_USER
    VM_PASSWORD
    EOF
    

    次のように置き換えます。

    • INPUT_FILE: 入力ファイル名
    • CSV_FILES_PREFIX: CSV ファイル名の接頭辞
    • CSV_FILE_SUFFIX: CSV ファイル名の接尾辞
    • VSPHERE_URL: vCenter Server インスタンスまたは vSphere Client の URL
    • VSPHERE_USER: vCenter ユーザー名
    • VSPHERE_PASSWORD: vCenter パスワード
    • VM_USER: VM ユーザー名
    • VM_PASSWORD: VM パスワード
  2. ゲスト収集スクリプトを実行します。

    nohup ./mcdc_collect_vms_guest_tools.sh <INPUT_FILE > /tmp/mcdc.out 2>&1 &
    
  3. 前の手順で生成した CSV ファイルごとに手順 1 と 2 を繰り返します。

オフライン評価レポートを生成する

  • すべてのデータが収集されたら、詳細な HTML レポートを生成できます。

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

次のステップ