게스트 검색 및 데이터 수집 일괄 처리


이 튜토리얼에서는 마이그레이션 센터 검색 클라이언트 CLI 게스트 검색을 사용하여 일괄 VMware 가상 머신(VM) 인스턴스에서 데이터를 검색하고 수집하는 프로세스를 안내합니다. 대규모 VM 배치는 모니터링하고 문제를 해결하기 어려울 수 있습니다. 따라서 1,000개 미만의 소규모 그룹으로 일괄 처리하는 것이 좋습니다.

목표

이 튜토리얼에서는 다음과 같은 방법을 알아봅니다.

  • mcdc CLI 다운로드
  • VMWare 인벤토리 검색 수행
  • 검색된 모든 VM이 포함된 CSV 파일 생성
  • CSV 파일을 VM의 하위 집합이 포함된 여러 CSV 파일로 분할
  • CSV 파일의 모든 VM에서 게스트 검색 수행
  • 오프라인 평가 보고서 생성

비용

이 가이드는 온프레미스 리소스를 사용하므로 Google Cloud 비용이 발생하지 않습니다.

시작하기 전에

  1. Linux 머신을 준비하여 mcdc CLI를 설치하고 실행합니다. Linux 머신의 최소 요구사항은 다음과 같습니다.

    • glibc 버전 2.25 이상
    • 4GB RAM 및 10GB 디스크 공간
    • 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 클라이언트의 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 파일에 사용할 이름으로 바꿉니다.

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 클라이언트의 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
     

다음 단계