Coletar dados de guests das VMs do EC2 para avaliação off-line

Neste tutorial, você vai aprender sobre o processo de descoberta e coleta de dados em instâncias de máquina virtual (VM) do EC2 a serem usadas para avaliação técnica off-line usando a CLI de discovery client do Migration Center.

Objetivos

Neste tutorial, você vai aprender a fazer o seguinte:

  • Baixar a CLI mcdc para avaliar VMs do AWS EC2.
  • Realizar a descoberta de inventário do AWS EC2.
  • Coletar as informações de guest de todas as VMs em uma região do EC2 usando o AWS Session Manager ou o SSH.
  • Gerar um relatório de avaliação off-line.
  • (Avançado) Modificar os scripts de acordo com suas necessidades.
  • (Avançado) Escrever um script de orquestração do zero.

Custos

Este tutorial não gera custos com Google Cloud .

É pouco provável que isso afete os custos da AWS.

Antes de começar

Os pré-requisitos dependem de como você acessa as VMs do EC2.

Session Manager

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

    • Versão do kernel do Linux 2.6.23 ou posterior
    • 4 GB de RAM e 10 GB de espaço em disco
    • AWS CLI instalada
  2. Verifique se a AWS CLI tem as seguintes permissões:

    • Pode chamar aws ssm describe-instance-information
    • Pode chamar aws ssm start-session

SSH

  1. Prepare uma máquina Linux para baixar e executar a CLI mcdc. A máquina Linux precisa atender aos seguintes requisitos mínimos:

    • Versão do kernel do Linux 2.6.23 ou posterior
    • 4 GB de RAM e 10 GB de espaço em disco
    • AWS CLI instalada
    • Conectividade de rede com instâncias do EC2 (possivelmente por meio de um proxy)
  2. Verifique se a AWS CLI tem as seguintes permissões:

Baixe a mcdc CLI

  1. Acesse a máquina Linux:
    ssh MACHINE_IP

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

  2. Baixe a versão mais recente da mcdc CLI 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 à variável PATH do shell:
    PATH=$PATH:`pwd`

Realizar uma descoberta de inventário da AWS

  • Execute a descoberta de inventário:

    ./mcdc discover aws -r REGION
    

    Substitua REGION pela região das suas VMs do EC2.

    A CLI mcdc vai pedir seu ID da chave de acesso e a chave de acesso secreta.

    A saída do comando será semelhante a esta:

    Collected 166 VMs
    [✓] Collection completed.
    

Realizar descoberta de guests

É possível realizar a descoberta de guests usando o Session Manager ou o SSH.

Session Manager

Neste método, você usa o AWS Systems Manager Session Manager para realizar a descoberta de guests em todas as VMs com o agente SSM instalado. O agente SSM é instalado por padrão na maioria das AMIs fornecidas pela Amazon e pode ser instalado manualmente em outras.

  1. Todas as VMs precisam ter um perfil do IAM que permita se conectar usando o Session Manager. Saiba mais na documentação da AWS.

  2. Verifique se todas as VMs que você quer coletar estão ativadas.

  3. Execute a descoberta de guests usando o script de coleta de guests ssm, disponível no repositório do Migrate to Containers no GitHub.

    a. Baixe o script:

     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. Execute o script e salve o resultado em um arquivo:

     ./mcdc_collect_aws_guest_ssm.sh --region REGION
    

    Substitua REGION pela região das suas VMs do EC2.

    Todas as flags são transmitidas diretamente para aws ssm describe-instance-information. Para coletar de uma VM específica, execute o seguinte comando:

     ./mcdc_collect_aws_guest_ssm.sh --region REGION --filters "Key=InstanceIds,Values=VM_ID"
    

    Substitua VM_ID pelo ID da VM.

    Confira todas as flags que o comando describe-instance-information aceita na documentação da AWS.

SSH

Neste método, você usa SSH para executar a descoberta de guests em VMs do Linux. Você acessa o endereço IP público de cada VM. No entanto, a modificação no script é simples. Por exemplo, para acessar o endereço IP particular.

O script usa a conexão de instância EC2 para autenticação. A conexão da instância está disponível apenas em VMs do Amazon Linux e Ubuntu e pode exigir instalação. No entanto, é simples ajustar o script para usar outro método de autenticação, como autenticação por senha usando sshpass ou uma chave privada.

  1. Verifique se você tem acesso de rede às VMs. Talvez seja necessário ajustar as regras de entrada dos grupos de segurança ou usar um proxy para se conectar.

  2. Verifique se todas as VMs que você quer coletar estão ativadas.

  3. Execute a descoberta de guests usando o script de coleta de guests ssh, disponível no repositório do Migrate to Containers no GitHub.

    1. Baixe o script:

      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. Execute o script e salve o resultado em um arquivo:

      ./mcdc_collect_aws_guest_ssh.sh --region REGION
      

      Substitua REGION pela região das suas VMs do EC2.

      Qualquer flag chamada -a ou --ssh-arg é transmitida diretamente para o SSH. Para desativar a autenticação restrita da chave de host, execute o seguinte comando:

      ./mcdc_collect_aws_guest_ssh.sh --region REGION -a '-o StrictHostKeyChecking=no'
      

      Todas as outras flags são transmitidas diretamente para aws ssh describe-instances. Para coletar de uma VM específica, execute o seguinte comando:

      ./mcdc_collect_aws_guest_ssm.sh --region REGION --instance-ids VM_ID
      

      Substitua VM_ID pelo ID da VM.

      Confira todas as flags aceitas na documentação da AWS.

      É possível usar um proxy para acessar uma VM usando a opção SSH ProxyCommand. Por exemplo, para usar um proxy socks5 na porta PROXY_PORT, execute o seguinte comando:

      ./mcdc_collect_aws_guest_ssh.sh --region REGION -a '-o ProxyCommand=nc -X 5 -x 127.0.0.1:PROXY_PORT %h %p'
      

      Substitua PROXY_PORT pelo número da porta.

  4. Se você ajustou as regras de entrada na etapa 1, considere reverter as alterações.

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
     

(Avançado) Modificar os scripts de acordo com suas necessidades

É possível que nenhum dos scripts atenda exatamente às suas necessidades. Por exemplo, talvez o agente SSM ou a conexão de instância não estejam instalados em todas as suas VMs.

Nesses casos, geralmente há uma maneira padrão de se conectar às máquinas. Recomendamos que você escreva scripts para orquestrar esses métodos em grande escala. Em alguns casos, pode ser necessário escrever esses scripts do zero, mas em outros você pode modificar scripts já criados.

Por exemplo, é possível modificar o script de coleta SSH para usar endereços IP particulares em vez de públicos.

Os scripts têm vários comentários para facilitar a compreensão.

(Avançado) Escrever um script de orquestração do zero

Para orquestrar a descoberta de guests e a coleta de dados em escala, faça o seguinte:

  1. Identifique todas as VMs que você quer coletar.
  2. Faça upload do script de coleta de guests para cada VM. As VMs do Linux e do Windows exigem scripts diferentes.
  3. Execute o script de coleta de guests em cada VM.
  4. Baixe o artefato criado em cada VM.
  5. Importe o script de coleta de guests salvo para a CLI mcdc.

Embora muitas vezes você precise escrever muito do zero, há alguns elementos básicos úteis nos scripts de exemplo que podem ajudar em algumas dessas tarefas. Exemplo:

A seguir