Jon*_*nik 7 ubuntu 64-bit amazon-ami amazon-ec2 amazon-web-services
我已经定制了(EBS 支持的)AMI 来运行我们的应用程序的演示版本。(AMI 包含 Ubuntu 11.04 以及应用程序本身的 Tomcat 和 MySQL 设置,以及 Jenkins 以方便一键更新演示)。
这是一个 32 位 AMI,这意味着我有以下实例类型选项:
我们已经注意到,我们希望演示服务器的性能比 c1.medium 所能提供的更高。(具体来说,我怀疑“I/O 性能:中等”可能是一个瓶颈,尽管鉴于我们对所有事情都使用 EBS,我不确定改进这是否会有所帮助。)
无论如何,为了使用更强大的实例类型(例如“m1.large”或“c1.xlarge”),我需要一个 64 位 AMI。
一种方法是从干净的 64 位Ubuntu AMI创建一个新实例,然后在那里重新设置我的系统,最后将其保存为新的 AMI。我可以使用当前设置挂载一个卷,然后将cp -a一些内容转移到新实例的根磁盘,这会有所帮助。但即便如此,这种方法也可能有些乏味和耗时。
所以,我的问题是,是否有任何更简单、自动化的方法可以将 32 位 AMI 转换为 64 位 AMI?
Eri*_*ond 14
最佳实践:
每当您构建 AMI(或什至设置实例)时,请始终记录您安装和配置软件所采取的确切步骤,以及您在其上放置的数据和位置。这有很多好处,包括可以轻松地为不同的架构重建相同的 AMI。
更好的是,我建议编写大部分或全部安装、配置步骤的脚本,以便您可以自动构建 AMI。这使得调整设置和测试新版本变得容易。
以下是我如何使用为私有 Git 存储库服务器安装 Git 和 gitolite 构建 Ubuntu AMI 的示例:
https://github.com/alestic/alestic-git/blob/master/bin/alestic-git-build-ami
上面的第一个建议是设置通常在根卷上运行的软件。您的数据应放置在您在运行 AMI 后附加到实例的单独 EBS 卷上。这有很多好处,包括能够在实例之间移动数据,比如当您想要切换到运行新的 AMI 时。它还允许您制作数据卷的副本以附加到开发实例。
您可能认为此建议对您来说为时已晚,但您将要构建另一个 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 为它编写脚本——你几乎不会每次都设置这些东西一两次——通常是很多次。拥有所有这些自动化和源代码控制是至关重要的。
| 归档时间: |
|
| 查看次数: |
1608 次 |
| 最近记录: |