gpt4 book ai didi

amazon-ec2 - 将 Amazon EC2 AMI 转换为虚拟盒或 Vagrant 盒

转载 作者:行者123 更新时间:2023-12-03 07:06:04 25 4
gpt4 key购买 nike

我想复制正在运行的 EC2 实例的磁盘镜像(获取 AMI)并将其导入虚拟盒或最终使用 Vagrant 运行它。我看到打包程序 ( http://www.packer.io/ ) 允许您创建 AMI 和相应的 Vagrant 盒子来协同工作,但是我目前运行的实例已经运行了两年多,并且很难复制。

我认为这个问题在 DevOps 社区中很常见,但在我的在线研究中尚未找到解决方案。有没有任何工具可以让您完成这项任务?

最佳答案

我只是想指出@Drewness在原始问题的第一条评论中回答了这个问题。我只是添加这个答案以使其更清楚,因为答案也链接到 anchor 标记中。该链接指向以下页面:How to convert EC2 AMI to VMDK for Vagrant .

所以基本上你需要启用 root SSH 访问,例如

$ 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>

然后将正在运行的系统复制到本地磁盘镜像:

$ ssh -i ~/.ec2/your_key root@ec2-XX-XX-XX-X.compute-1.amazonaws.com 'dd if=/dev/xvda1 bs=1M | gzip' | gunzip | dd of=./ec2-image.raw

之后在新的图像文件上准备文件系统:

$ 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

现在您需要将 EC2 镜像中的所有内容复制到空镜像:

$ 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/

并安装 Grub:

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

并卸载设备 (umount/dev/loop1) 并将原始磁盘镜像转换为 vmdk 镜像:

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

现在只需创建一个 VirtualBox VM,并将 vmdk 镜像安装为主启动设备即可。

Unfortunately at this point I could not get the Amazon Linux kernel to boot inside VirtualBox.

关于amazon-ec2 - 将 Amazon EC2 AMI 转换为虚拟盒或 Vagrant 盒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21920993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com