virginia pricing machine east aws amazon-ec2 virtualbox vagrant ec2-ami packer

amazon ec2 - pricing - Convierta Amazon AM2 AMI en una caja Virtual o Vagabunda



aws ami pricing (2)

Deberías exportar la instancia .

Para obtener más información, consulte: Cómo exportar una máquina virtual desde Amazon EC2 a VMware On-Premise .

Personalmente, he hecho esto en una caja de Windows instalando el convertidor VMWare en la instancia y convirtiendo el sistema local en un VMDK. Luego publiqué el VMDK en S3.

Me gustaría copiar la imagen del disco de una instancia de EC2 en ejecución (tomar el AMI) e importarlo en un cuadro virtual o eventualmente ejecutarlo usando Vagrant. Vi que el empaquetador ( http://www.packer.io/ ) le permite crear AMI y las cajas Vagrant correspondientes para que trabajen juntas, sin embargo, la instancia actual que tengo se ha estado ejecutando durante más de dos años y sería difícil de replicar.

Me imagino que este problema es común en la comunidad Devops, sin embargo, no he encontrado una solución en mi investigación en línea. ¿Hay alguna herramienta que le permita realizar esta tarea?


Solo quería señalar que @Drewness respondió esta pregunta en el primer comentario a la pregunta original. Solo agrego esta respuesta para que quede más claro porque la respuesta también está vinculada a una etiqueta de anclaje. El enlace apunta hacia la siguiente página: Cómo convertir EC2 AMI a VMDK para Vagrant .

Así que, básicamente, debe habilitar el acceso raíz a SSH, por ejemplo

$ sudo perl -i -pe ''s/#PermitRootLogin .*/PermitRootLogin without-password/'' /etc/ssh/sshd_config $ sudo perl -i -pe ''s/.*(ssh-rsa .*)//1/'' /root/.ssh/authorized_keys $ sudo /etc/init.d/sshd reload # optional command<br>

Luego copie el sistema en ejecución a una imagen de disco local:

$ ssh -i ~/.ec2/your_key [email protected] ''dd if=/dev/xvda1 bs=1M | gzip'' | gunzip | dd of=./ec2-image.raw

Después de eso prepare un sistema de archivos en un nuevo archivo de imagen:

$ dd if=/dev/zero of=vmdk-image.raw bs=1M count=10240 # create a 10gb image file $ losetup -fv vmdk-image.raw # mount as loopback device $ cfdisk /dev/loop0 # create a bootable partition, write, and quit $ losetup -fv -o 32256 vmdk-image.raw # mount the partition with an offset $ fdisk -l -u /dev/loop0 # get the size of the partition $ mkfs.ext4 -b 4096 /dev/loop1 $(((20971519 - 63)*512/4096)) # format using the END number

Ahora debe copiar todo, desde la imagen EC2 a la imagen vacía:

$ losetup -fv ec2-image.raw $ mkdir -p /mnt/loop/1 /mnt/loop/2 # create mount points $ mount -t ext4 /dev/loop1 /mnt/loop/1 # mount vmdk-image $ mount -t ext4 /dev/loop2 /mnt/loop/2 # mount ami-image $ cp -a /mnt/loop/2/* /mnt/loop/1/

e instale Grub:

$ cp /usr/lib/grub/x86_64-pc/stage* /mnt/loop/1/boot/grub/

y desmontar el dispositivo ( umount /dev/loop1 ) y convertir la imagen del disco sin formato a una imagen de vmdk:

$ qemu-img convert -f raw -O vmdk vmdk-image.raw final.vmdk

Ahora solo cree una VirtualBox VM con la imagen vmdk montada como el dispositivo de arranque principal.

Lamentablemente, en este punto no pude obtener el kernel de Amazon Linux para arrancar dentro de VirtualBox.