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


Este tutorial orienta você no 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 da Central de migração.

Objetivos

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

  • Fazer o download da CLI mcdc para avaliar suas VMs do AWS EC2.
  • Realizar a descoberta de inventário do AWS EC2
  • Coletar informações no nível do convidado em 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) Modifique 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 o Google Cloud.

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

Antes de começar

Os pré-requisitos dependem de como você se conecta às VMs do EC2.

Gerenciador de sessão

  1. Prepare uma máquina Linux para fazer o download 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
    • CLI da AWS instalada
  2. Verifique se a CLI da AWS tem as seguintes permissões:

    • Pode ligar para aws ssm describe-instance-information
    • Pode ligar para aws ssm start-session

SSH

  1. Prepare uma máquina Linux para fazer o download 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
    • CLI da AWS instalada
    • Conectividade de rede com instâncias do EC2 (possivelmente por meio de um proxy)
  2. Verifique se a CLI da AWS tem as seguintes permissões:

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 AWS

  • Execute a descoberta de inventário:

    ./mcdc discover aws -r REGION
    

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

    A CLI mcdcsolicitará o ID da chave de acesso e a chave de acesso secreta.

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

    Collected 166 VMs
    [✓] Collection completed.
    

Realizar descoberta de convidados

É possível realizar a descoberta de convidados usando o Gerenciador de sessões ou o SSH.

Gerenciador de sessão

Esse método usa o Gerenciador de sessões do Gerenciador de sistemas da AWS para realizar a descoberta de convidados 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. Verifique se todas as VMs têm um papel do IAM que permita se conectar usando o gerenciador de sessões. Para mais informações, consulte a documentação da AWS.

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

  3. Execute a descoberta de convidados usando o script de coleção de convidados ssm do repositório Migrate to Containers no GitHub.

    a. Faça o download do 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 a saída em um arquivo:

     ./mcdc_collect_aws_guest_ssm.sh --region REGION
    

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

    Todas as sinalizações 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.

    Para mais informações sobre todas as sinalizações permitidas para o comando describe-instance-information, consulte a documentação da AWS.

SSH

Esse método usa SSH para executar a descoberta de convidados em VMs do Linux. Ele se conecta ao endereço IP público de cada VM. No entanto, a modificação no script precisa ser simples. Por exemplo, para se conectar ao 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, deve ser simples ajustar o script para usar um método de autenticação alternativo, 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 convidados usando o script de coleção de convidados SSH do repositório do Migrate to Containers no GitHub.

    1. Faça o download do 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 a saída em um arquivo:

      ./mcdc_collect_aws_guest_ssh.sh --region REGION
      

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

      Qualquer sinalização chamada -a ou --ssh-arg é passada 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 sinalizações 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.

      Para saber mais sobre todas as sinalizações permitidas, consulte a documentação da AWS.

      É possível usar um proxy para se conectar a uma VM usando a opção SSH ProxyCommand. Por exemplo, para usar um proxy socks5 já existente 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ê tiver ajustado 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) Modifique os scripts de acordo com suas necessidades

É possível que nenhum dos scripts atenda exatamente às suas necessidades. Por exemplo, você pode não ter o agente SSM ou a conexão de instância instalados em algumas das suas VMs.

Nesses casos, geralmente há uma maneira padrão de se conectar às máquinas. Recomendamos que você escreva scripts que permitam 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 os scripts existentes.

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

Os scripts são muito comentados para facilitar seu entendimento.

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

Para orquestrar a descoberta de convidados 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 coleção de convidados para cada VM. As VMs do Linux e do Windows exigem scripts de coleta de convidados diferentes.
  3. Execute o script de coleta de convidados em cada VM.
  4. Faça o download do artefato criado em cada VM.
  5. Importe o script de coleção de convidados 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