Recoger datos de invitados de máquinas virtuales EC2 para realizar evaluaciones sin conexión


En este tutorial se explica cómo descubrir y recoger datos de instancias de máquinas virtuales (VMs) de EC2 para usarlos en una evaluación técnica sin conexión mediante la CLI del cliente de descubrimiento de Migration Center.

Objetivos

En este tutorial aprenderás a:

  • Descarga la CLI de mcdc para evaluar tus VMs de AWS EC2.
  • Realiza el descubrimiento de inventario de AWS EC2.
  • Recopila información a nivel de invitado de todas las máquinas virtuales de una región de EC2 mediante AWS Session Manager o SSH.
  • Genera un informe de evaluación sin conexión.
  • (Avanzado) Modifica las secuencias de comandos para que se ajusten a tus necesidades.
  • (Avanzado) Escribe un guion de orquestación desde cero.

Costes

Este tutorial no tiene ningún coste Google Cloud .

Es poco probable que afecte a tus costes de AWS.

Antes de empezar

Los requisitos previos dependen de la forma en que te conectes a tus VMs de EC2.

Gestor de sesiones

  1. Prepara un equipo Linux para descargar y ejecutar la mcdcCLI. El dispositivo Linux debe cumplir los siguientes requisitos mínimos:

    • Versiones del kernel de Linux 2.6.23 o posteriores
    • 4 GB de RAM y 10 GB de espacio en disco
    • CLI de AWS instalada
  2. Asegúrate de que la CLI de AWS tenga los siguientes permisos:

    • Puede llamar a aws ssm describe-instance-information
    • Puede llamar a aws ssm start-session

SSH

  1. Prepara un equipo Linux para descargar y ejecutar la mcdcCLI. El dispositivo Linux debe cumplir los siguientes requisitos mínimos:

    • Versiones del kernel de Linux 2.6.23 o posteriores
    • 4 GB de RAM y 10 GB de espacio en disco
    • CLI de AWS instalada
    • Conectividad de red a instancias de EC2 (posiblemente a través de un proxy)
  2. Asegúrate de que la CLI de AWS tenga los siguientes permisos:

Descargar la CLI de mcdc

  1. Conéctate al equipo Linux:
    ssh MACHINE_IP

    Sustituye MACHINE_IP por la dirección IP de tu máquina Linux.

  2. Descarga la versión más reciente de la CLI de mcdc y haz que sea ejecutable:
      curl -O "https://mcdc-release.storage.googleapis.com/$(curl -s https://mcdc-release.storage.googleapis.com/latest)/mcdc"
      chmod +x mcdc
  3. Añade la CLI de mcdc a la ruta de tu shell:
    PATH=$PATH:`pwd`

Realizar un descubrimiento de inventario de AWS

  • Ejecuta el descubrimiento de inventario:

    ./mcdc discover aws -r REGION
    

    Sustituye REGION por la región de tus VMs de EC2.

    La CLI de mcdc te pedirá el ID de clave de acceso y la clave de acceso secreta.

    El resultado del comando discover tiene un aspecto similar al siguiente:

    Collected 166 VMs
    [✓] Collection completed.
    

Realizar el descubrimiento de invitados

Puedes detectar invitados mediante Session Manager o SSH.

Gestor de sesiones

Este método usa Gestor de sesiones de AWS Systems Manager para detectar los SOs invitados en todas las VMs que tengan instalado el agente de SSM. El agente de SSM está instalado de forma predeterminada en la mayoría de las AMIs proporcionadas por Amazon y se puede instalar manualmente en otras.

  1. Asegúrate de que todas las VMs tengan un rol de gestión de identidades y accesos que permita conectarse mediante Session Manager. Para obtener más información, consulta la documentación de AWS.

  2. Asegúrate de que todas las máquinas virtuales que quieras recoger estén activadas.

  3. Ejecuta la detección de invitados con la secuencia de comandos de recogida de invitados de SSM del repositorio de Migrate to Containers en GitHub.

    a. Descarga la secuencia de comandos:

     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. Ejecuta la secuencia de comandos y guarda el resultado en un archivo:

     ./mcdc_collect_aws_guest_ssm.sh --region REGION
    

    Sustituye REGION por la región de tus VMs de EC2.

    Todas las marcas se transfieren directamente a aws ssm describe-instance-information. Para recoger datos de una máquina virtual específica, ejecuta el siguiente comando:

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

    Sustituye VM_ID por el ID de la VM.

    Para obtener más información sobre todas las marcas permitidas para el comando describe-instance-information, consulta la documentación de AWS.

SSH

Este método usa SSH para detectar invitados en máquinas virtuales Linux. Se conecta a la dirección IP pública de cada VM. Sin embargo, debería ser fácil modificar la secuencia de comandos. Por ejemplo, para conectarte a la dirección IP privada.

La secuencia de comandos usa EC2 Instance Connect para la autenticación. Instance Connect solo está disponible en máquinas virtuales de Amazon Linux y Ubuntu, y puede requerir instalación. Sin embargo, debería ser fácil ajustar la secuencia de comandos para usar un método de autenticación alternativo, como la autenticación con contraseña mediante sshpass o una clave privada.

  1. Asegúrate de tener acceso de red a las VMs. Es posible que tengas que ajustar las reglas de entrada de tus grupos de seguridad o usar un proxy para conectarte.

  2. Asegúrate de que todas las máquinas virtuales de las que quieras recoger datos estén encendidas.

  3. Ejecuta la detección de invitados con la secuencia de comandos de colección de invitados de SSH del repositorio de Migrate to Containers en GitHub.

    1. Descarga la secuencia de comandos:

      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. Ejecuta la secuencia de comandos y guarda el resultado en un archivo:

      ./mcdc_collect_aws_guest_ssh.sh --region REGION
      

      Sustituye REGION por la región de tus VMs de EC2.

      Cualquier marca llamada -a o --ssh-arg se transfiere directamente a SSH. Para inhabilitar la autenticación estricta de claves de host, ejecuta el siguiente comando:

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

      Todas las demás marcas se transfieren directamente a aws ssh describe-instances. Para recoger datos de una máquina virtual específica, ejecuta el siguiente comando:

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

      Sustituye VM_ID por el ID de la VM.

      Para obtener información sobre todas las marcas permitidas, consulta la documentación de AWS.

      Es posible usar un proxy para conectarse a una VM mediante la opción SSH ProxyCommand. Por ejemplo, para usar un proxy socks5 en el puerto PROXY_PORT, ejecuta el siguiente comando:

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

      Sustituye PROXY_PORT por el número de puerto.

  4. Si has ajustado las reglas de entrada en el paso 1, te recomendamos que deshagas los cambios.

Generar un informe de evaluación sin conexión

  • Una vez que se hayan recogido todos los datos, puede generar un informe HTML detallado:

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

(Avanzado) Modificar las secuencias de comandos para adaptarlas a tus necesidades

Es posible que ninguna de las secuencias de comandos se ajuste exactamente a tus necesidades. Por ejemplo, es posible que no tengas instalado el agente de SSM ni Instance Connect en algunas de tus VMs.

En estos casos, suele haber una forma estándar de conectarse a las máquinas. Te recomendamos que escribas secuencias de comandos que te permitan orquestar estos métodos a gran escala. En algunos casos, es posible que tengas que escribir estas secuencias de comandos desde cero, pero en otros podrás modificar las que ya tengas.

Por ejemplo, puedes modificar la secuencia de comandos de recogida de SSH para usar direcciones IP privadas en lugar de públicas.

Los scripts están muy comentados para que sean fáciles de entender.

(Avanzado) Escribir un script de orquestación desde cero

Para orquestar la detección de huéspedes y la recogida de datos a gran escala, haz lo siguiente:

  1. Identifica todas las VMs de las que quieras recoger datos.
  2. Sube la secuencia de comandos de la colección de invitados a cada máquina virtual. Las VMs de Linux y Windows requieren secuencias de comandos de recogida de datos de invitado diferentes.
  3. Ejecuta la secuencia de comandos de la colección de invitados en cada VM.
  4. Descarga el artefacto creado de cada VM.
  5. Importa la secuencia de comandos de la colección de invitados descargada en la CLI de mcdc.

Aunque a menudo tendrás que escribir gran parte de este contenido desde cero, en las secuencias de comandos de ejemplo encontrarás algunos componentes básicos útiles que pueden ayudarte con algunas de estas tareas. Por ejemplo:

Siguientes pasos