Agrupamento da descoberta de hóspedes e da recolha de dados


Este tutorial explica o processo de descoberta e recolha de dados num lote de instâncias de máquinas virtuais (VM) do VMware através da descoberta de convidados da CLI do cliente de descoberta do centro de migração. Pode ser difícil monitorizar e resolver problemas de grandes lotes de VMs. Recomendamos que agrupe em lotes mais pequenos de menos de 1000.

Objetivos

Neste tutorial, vai aprender a:

  • Transfira a mcdc CLI.
  • Execute uma descoberta de inventário do VMWare.
  • Gere um ficheiro CSV com todas as VMs descobertas.
  • Divida o ficheiro CSV em vários ficheiros CSV que contenham um subconjunto das VMs.
  • Execute a deteção de convidados em todas as VMs num ficheiro CSV.
  • Gere um relatório de avaliação offline.

Custos

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

Antes de começar

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

    • glibc versão 2.25 ou posterior
    • 4 GB de RAM e 10 GB de espaço em disco
    • Conetividade de rede aos anfitriões vCenter e ESX
  2. Certifique-se de que tem um utilizador do vSphere com as autorizações necessárias:

    • Privilégios de leitura para VMs
    • Privilégios de leitura para todos os anfitriões ESX
    • Modificações ao funcionamento de convidados
    • Execução do programa de operações de convidados
    • Consultas de funcionamento de convidados

Transfira a CLI mcdc

  1. Estabeleça ligação à máquina Linux:
    ssh MACHINE_IP

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

  2. Transfira a 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 da shell:
    PATH=$PATH:`pwd`

Faça uma descoberta de inventário do VMware

  • Execute a descoberta de inventário:

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

    Substitua o seguinte:

    • USERNAME: o seu nome de utilizador do vCenter
    • VSPHERE_URL: o URL da instância do vCenter Server ou do vSphere Client

    O resultado do comando discover tem o seguinte aspeto:

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

Gere um ficheiro CSV com todas as VMs descobertas

Para gerar um ficheiro CSV, use o script export do repositório 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 ficheiro CSV com todas as VMs que foram descobertas no passo anterior.

  1. Transfira o guião:

    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 guarde o resultado num ficheiro:

    ./mcdc_discovery_export_guest_tools.sh > VMS_CSV_FILE
    

    Substitua VMS_CSV_FILE pelo nome que quer dar ao ficheiro CSV.

Divida o ficheiro CSV em vários ficheiros CSV com um subconjunto das VMs

Para dividir o ficheiro CSV grande em ficheiros CSV mais pequenos, use o script splitter do repositório 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. Transfira o guião:

    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 o seguinte:

    • VMS_CSV_FILE: o ficheiro CSV de entrada a dividir.
    • CSV_FILES_PREFIX: o prefixo dos ficheiros CSV gerados.
    • LINES_PER_FILE: o número de linhas por ficheiro CSV gerado. O valor predefinido é 10.

    O script gera vários ficheiros CSV.

  3. Veja a lista de ficheiros CSV gerados:

    ls -lrt CSV_FILES_PREFIX*
    

Execute a deteção de convidados em todas as VMs num ficheiro CSV

Para executar a deteção de convidados para as VMs num ficheiro CSV, use o script collection do repositório do GitHub Migrate to Containers.

Repita este passo para cada ficheiro CSV gerado no passo 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 carregar e executar o script de recolha de convidados na VM.

É melhor executar este script em segundo plano e direcionar a saída para um ficheiro de registo. Para tal, tem de criar um ficheiro de texto que é transmitido como entrada para o script.

  1. Crie o ficheiro de texto:

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

    Substitua o seguinte:

    • INPUT_FILE: nome do ficheiro de entrada
    • CSV_FILES_PREFIX: Prefixo do nome do ficheiro CSV
    • CSV_FILE_SUFFIX: sufixo do nome do ficheiro CSV
    • VSPHERE_URL: o URL da instância do vCenter Server ou do vSphere Client
    • VSPHERE_USER: nome de utilizador do vCenter
    • VSPHERE_PASSWORD: palavra-passe do vCenter
    • VM_USER: nome de utilizador da VM
    • VM_PASSWORD: palavra-passe da VM
  2. Execute o guião de recolha de convidados:

    nohup ./mcdc_collect_vms_guest_tools.sh <INPUT_FILE > /tmp/mcdc.out 2>&1 &
    
  3. Repita os passos 1 e 2 para cada ficheiro CSV gerado no passo anterior.

Gere um relatório de avaliação offline

  • Depois de recolher todos os dados, pode gerar um relatório HTML detalhado:

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

O que se segue?