将自定义 32 位 AMI 转换为 64 位 AMI 的简单方法?

Jon*_*nik 7 ubuntu 64-bit amazon-ami amazon-ec2 amazon-web-services

我已经定制了(EBS 支持的)AMI 来运行我们的应用程序的演示版本。(AMI 包含 Ubuntu 11.04 以及应用程序本身的 Tomcat 和 MySQL 设置,以及 Jenkins 以方便一键更新演示)。

这是一个 32 位 AMI,这意味着我有以下实例类型选项

  • 微型 (t1.micro)
  • 小 (m1.small)
  • 高 CPU 介质 (c1.medium)

我们已经注意到,我们希望演示服务器的性能比 c1.medium 所能提供的更高。(具体来说,我怀疑“I/O 性能:中等”可能是一个瓶颈,尽管鉴于我们对所有事情都使用 EBS,我不确定改进这是否会有所帮助。)

无论如何,为了使用更强大的实例类型(例如“m1.large”或“c1.xlarge”),我需要一个 64 位 AMI

一种方法是从干净的 64 位Ubuntu AMI创建一个新实例,然后在那里重新设置我的系统,最后将其保存为新的 AMI。我可以使用当前设置挂载一个卷,然后将cp -a一些内容转移到新实例的根磁盘,这会有所帮助。但即便如此,这种方法也可能有些乏味和耗时。

所以,我的问题是,是否有任何更简单、自动化的方法可以将 32 位 AMI 转换为 64 位 AMI?

Eri*_*ond 14

最佳实践:

  1. 每当您构建 AMI(或什至设置实例)时,请始终记录您安装和配置软件所采取的确切步骤,以及您在其上放置的数据和位置。这有很多好处,包括可以轻松地为不同的架构重建相同的 AMI。

    更好的是,我建议编写大部分或全部安装、配置步骤的脚本,以便您可以自动构建 AMI。这使得调整设置和测试新版本变得容易。

    以下是我如何使用为私有 Git 存储库服务器安装 Git 和 gitolite 构建 Ubuntu AMI 的示例:

    https://github.com/alestic/alestic-git/blob/master/bin/alestic-git-build-ami

  2. 上面的第一个建议是设置通常在根卷上运行的软件。您的数据应放置在您在运行 AMI 后附加到实例的单独 EBS 卷上。这有很多好处,包括能够在实例之间移动数据,比如当您想要切换到运行新的 AMI 时。它还允许您制作数据卷的副本以附加到开发实例。

您可能认为此建议对您来说为时已晚,但您将要构建另一个 AMI,所以……


Bar*_*Vos 7

不,没有自动化的方式。您必须从 Ubuntu-plain 开始创建一个新的 AMI。

可以转换 Unbuntu 安装,但它真的很混乱。最好制作一个新的 AMI。


小智 5

我相信您需要从一个新的 AMI 开始,但是您可以使用 dpkg 在旧图像上生成一个包列表:

dpkg --get-selections | awk '{print $1}' > pkgs.old
Run Code Online (Sandbox Code Playgroud)

然后在新映像上使用它来确定您可能需要安装哪些软件包:

dpkg --get-selections | awk '{print $1}' | fgrep -v -f - pkgs.old
Run Code Online (Sandbox Code Playgroud)

然后可能从 /etc 复制文件应该可以让您完成大部分工作。

并且 +1 为它编写脚本——你几乎不会每次都设置这些东西一两次——通常是很多次。拥有所有这些自动化和源代码控制是至关重要的。