viernes, 26 de abril de 2019

AWS - Subir on premise VM a AWS.


Hola,

En el siguiente artículo, os voy a explicar como subir una máquina virtual que tenemos corriendo on premise a AWS, así como particularidades que he observado y aportes respecto al procedimiento oficial que podéis encontrar aquí:

https://docs.aws.amazon.com/es_es/vm-import/latest/userguide/vmimport-image-import.html

Y más extensamente aquí:

https://docs.aws.amazon.com/vm-import/latest/userguide/vm-import-ug.pdf

AWS Server Migration Services o Import/Export
Antes de nada, cabe destacar que desde que ha aparecido el proceso de migración de máquinas virtuales (AWS Server migration services) el proceso que aquí detallo, es idoneo si has de crear una plantilla para luego, crear diferentes máquinas virtuales. Este proceso también vale y hasta la fecha se utilizaba, para migrar tus máquinas virtuales, pero ahora que podemos elegir, AWS Server migration Services facilita enormemente la migración.

Requsitos en vuestro equipo
Previo a la realización del proceso, es necsario que instaléis AWS command line

https://aws.amazon.com/es/cli/

Requisitos de la VM
También, antes de apagar la máquina on premise y empezar a trabajar la migración hacia AWS, debéis leer el siguiente link, donde os dicen como preparar la máquina previo a la subida.

https://docs.aws.amazon.com/es_es/vm-import/latest/userguide/vmie_prereqs.html

En relación al formato de discos soportados, aquí AWS gana, porque soporta todos los formatos de discos virtuales y además, en referencia  Hyper-V, soporta discos VHD, VHDX bien sean estáticos o dinámicos.

Es importante que siguiendo el link de pre requisitos antes expuesto, sigáis los pasos para preparar la máquina en el apartado "Prepare su máquina".

Migración

Vamos allá. Los pasos para la migración son los siguientes:

1. Abrir CMD y conectar a vuestra suscripción en AWS con el comando AWS Configure.

2.Empezar a subir el disco de la VM a un Bucket. Para poder subir un archivo grande debéis utilizar la línea de comandos. El comando es el siguiente:

AWS s3 cp  "origen" s3://nombredebucket.

Ejemplo:
3. En paralelo, mientras subimos el disco, debéis crear un archivo, con nombre trust-policy.json con el texto siguiente y ejecutar el comando que os detallo también.

Texto:
{
  
"Version": "2012-10-17",
  
"Statement": [
      {
        
"Effect": "Allow",
        
"Principal": { "Service": "vmie.amazonaws.com" },
        
"Action": "sts:AssumeRole",
        
"Condition": {
           
"StringEquals":{
              
"sts:Externalid": "vmimport"
            }
         }
      }
   ]
}


Comando:  aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json



4. Creemos ahora un archivo con el cliente texto y nombre role-policy.json

4.2 Tenemos que lanzar el archivo con el comando: aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json

Es necesario que sustituyas "Disk-image-file-bucket" con el nombre del bucket. (Ver ejemplo).
{
  
"Version":"2012-10-17",
  
"Statement":[
      {
        
"Effect":"Allow",
        
"Action":[
           
"s3:GetBucketLocation",
           
"s3:GetObject",
           
"s3:ListBucket" ], "Resource":[
           
"arn:aws:s3:::disk-image-file-bucket",
           
"arn:aws:s3:::disk-image-file-bucket/*"
         ]
      },
      {
        
"Effect":"Allow",
        
"Action":[
           
"ec2:ModifySnapshotAttribute",
           
"ec2:CopySnapshot",
           
"ec2:RegisterImage",
           
"ec2:Describe*"
         ],
        
"Resource":"*"
      }
   ]
}
Ejemplo:

5. Ahora tenemos que importar el disco ya subido (supervisar la copia lanzada en el paso 2. 
Para ello tenemos que crear un nuevo archivo json, con el nombre "containers.json".

Texto:
[
  {
   
"Description": "NOMBREDESCRIPTIVO",
   
"Format": "vhd",
   
"UserBucket": {
       
"S3Bucket": "my-import-bucket",
       
"S3Key": "vms/my-windows-2008-vm.ova"


    }
}] *formato: vhd, VMDK, RAW, OVA, ETC. Comando: aws ec2 import-image --description "NombreDescriptivo" --license-type --disk-containers file://containers.json A tener en cuenta que los valores posibles de --license-type son:

  • Auto (valor predeterminado)
    Detecta el sistema operativo (SO) del sistema de origen y aplica la licencia adecuada a la máquina virtual (MV) migrada.
  • AWS
    Reemplaza la licencia del sistema de origen por una licencia del AWS, si procede, en la MV migrada.
  • BYOL
    Conserva la licencia del sistema de origen, si procede, en la MV migrada

https://docs.aws.amazon.com/es_es/vm-import/latest/userguide/vmie_prereqs.htm

Ejemplo:

Comando:

AWS ec2 describe-import-image-task

Con este comando, podréis ver el estado de la migración de vuestro disco a imagen AMI. Los estados son:

  • active — Ta tarea de importación esta en curso.
  • deleting — La tarea de importación se está cancelando.
  • deleted — La tarea de importación se ha cancelado.
  • updating — El estado de la importación se está actualizando.
  • validating — La imagen importada se está validando.
  • validated — La imagen importada se ha validado.
  • converting — La imagen importada se está convirtiendo en una AMI.
  • completed — La tarea de importación se ha completado y la AMI está lista para usar.

https://docs.aws.amazon.com/es_es/vm-import/latest/userguide/vmimport-image-import.html 5. Una vez finalice este proceso, pasáis a tener ya una AMI, que no es más que una plantilla lista para el despliegue.
6. Elegir la imagen y hacer click en Select para el despliegue.


No hay comentarios: