Descoberta de convidados em lote e coleta de dados


Neste tutorial, explicamos o processo de descoberta e coleta de dados em um lote de instâncias de máquina virtual (VM) da VMware usando a descoberta de convidado da CLI do discovery client da Central de migração. Grandes lotes de VMs podem ser difíceis de monitorar e solucionar problemas. Recomendamos criar lotes em grupos menores com menos de 1.000.

Objetivos

Neste tutorial, você aprenderá a:

  • fazer o download da CLI mcdc;
  • executar uma descoberta de inventário do VMWare;
  • gerar um arquivo CSV com todas as VMs descobertas;
  • dividir o arquivo CSV em vários arquivos CSV com um subconjunto das VMs;
  • executar a descoberta de convidados em todas as VMs em um arquivo CSV;
  • gerar um relatório de avaliação off-line.

Custos

Este tutorial usa recursos no local e não gera custos no Google Cloud.

Antes de começar

  1. Prepare uma máquina Linux para instalar e executar a CLI mcdc. A máquina Linux precisa ter os seguintes requisitos mínimos:

    • glibc versão 2.25 ou posterior
    • 4 GB de RAM e 10 GB de espaço em disco
    • Conectividade de rede com hosts vCenter e ESX
  2. Verifique se você tem um usuário do vSphere com as permissões necessárias:

    • Privilégios de leitura para VMs
    • Privilégios de leitura para todos os hosts ESX
    • Modificar operação de convidado
    • Executar programa de operação de convidado
    • Consultas de operação de convidado

Faça o download da CLI mcdc

  1. Conecte-se à máquina Linux:
    ssh MACHINE_IP
    

    Substitua MACHINE_IP pelo endereço IP da sua máquina Linux.

  2. Faça o download da versão mais recente da CLI mcdc e torne-a executável:
      curl -O "https://mcdc-release.storage.googleapis.com/$(curl -s https://mcdc-release.storage.googleapis.com/latest)/mcdc"
      chmod +x mcdc
    
  3. Adicione a CLI mcdc ao caminho do shell:
    PATH=$PATH:`pwd`
    

Realizar uma descoberta de inventário da VMware

  • Execute a descoberta de inventário:

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

    Substitua:

    • USERNAME: seu nome de usuário do vCenter
    • VSPHERE_URL: o URL da instância do servidor vCenter ou do cliente vSphere

    A saída do comando discover vai ser semelhante a esta:

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

Gerar um arquivo CSV com todas as VMs descobertas

Para gerar um arquivo CSV, use o script export no repositório do Migrate to Containers no GitHub.


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"

O script usa o comando report para gerar um arquivo CSV contendo todas as VMs que foram descobertas na etapa anterior.

  1. Faça o download do script:

    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. Execute o script e salve a saída em um arquivo:

    ./mcdc_discovery_export_guest_tools.sh > VMS_CSV_FILE
    

    Substitua VMS_CSV_FILE pelo nome do arquivo CSV.

Dividir o arquivo CSV em vários arquivos CSV com um subconjunto das VMs

Para dividir o arquivo CSV grande em arquivos CSV menores, use o script splitter do repositório do Migrate to Containers no GitHub.

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. Faça o download do script:

    curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/migrate-to-containers/main/scripts/mcdc/csv_splitter.sh
    chmod +x csv_splitter.sh
    
  2. Execute o script:

    ./csv_splitter.sh VMS_CSV_FILE CSV_FILES_PREFIX LINES_PER_FILE VMS_CSV_FILE CSV_FILES_PREFIX
    

    Substitua:

    • VMS_CSV_FILE: o arquivo CSV de entrada a ser dividido.
    • CSV_FILES_PREFIX: o prefixo dos arquivos CSV gerados.
    • LINES_PER_FILE: o número de linhas por arquivo CSV gerado. O valor padrão é 10.

    O script gera vários arquivos CSV.

  3. Veja a lista de arquivos CSV gerados:

    ls -lrt CSV_FILES_PREFIX*
    

Executar a descoberta de convidado em todas as VMs em um arquivo CSV

Para executar a descoberta de convidado para as VMs em um arquivo CSV, use o script collection no repositório do GitHub do Migrate to Containers.

Repita essa etapa para cada arquivo CSV gerado na etapa anterior.


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)

O script usa o comando discover vsphere guest para fazer upload e executar o script de coleta de convidado na VM.

É melhor executar esse script em segundo plano e direcionar a saída para um arquivo de registro. Para fazer isso, crie um arquivo de texto que será transmitido como entrada para o script.

  1. Crie o arquivo de texto:

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

    Substitua:

    • INPUT_FILE: nome de arquivo de entrada
    • CSV_FILES_PREFIX: prefixo do nome de arquivo CSV
    • CSV_FILE_SUFFIX: sufixo de nome de arquivo CSV
    • VSPHERE_URL: o URL da instância do servidor vCenter ou do cliente vSphere
    • VSPHERE_USER: nome de usuário do vCenter
    • VSPHERE_PASSWORD: senha do vCenter
    • VM_USER: nome de usuário da VM
    • VM_PASSWORD: senha da VM
  2. Execute o script de coleção de convidados:

    nohup ./mcdc_collect_vms_guest_tools.sh <INPUT_FILE > /tmp/mcdc.out 2>&1 &
    
  3. Repita as etapas 1 e 2 para cada arquivo CSV gerado na etapa anterior.

Gerar um relatório de avaliação off-line

  • Quando todos os dados forem coletados, será possível gerar um relatório HTML detalhado:

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

A seguir