Packer + Vagrant - 从ISO创建AMI

5

能否从ISO创建AMI?

我正在实施一个构建系统,该系统使用基础ISO,修改它,安装一些东西,然后将其输出为.ovf和AMI。

.ovf可以工作。但是对于AMI,我唯一能想到的是它需要预先存在的AMI。这正确吗?

有没有办法使用ISO并生成AMI?

谢谢。

2个回答

4
当你说从ISO开始的时候,这告诉我你想要创建一个可信的基础VM。你想先在本地从头开始安装然后将其作为可信私有AMI导入到EC2上。如果你不介意使用veewee,这里有一篇关于如何使用veewee而不是packer的很棒的文章:veewee,已经设置好了CentOS环境。你只需要克隆它并根据你的用例进行调整即可。
但由于你像我一样正在寻找packer,所以你需要的是packer中的virtualbox-iso构建器和一些aws-cli命令来上传并创建一个AMI。不幸的是,Packer没有针对此的后处理器。然后,您可以使用vagrant引用新的AMI进行基于EC2开发,并使用vagrant-aws插件从您的可信基础AMI创建新的AMI。
以下是需要遵循的步骤:
1.)为图像导入创建一个S3存储桶。
2.)设置您的AWS账户。 创建'vmimport' IAM角色和策略以及X509密钥和证书对(如果您没有),因为您需要此来注册私有AMI。您还将引用该桶的名称以供策略使用。
3.)使用packer的virtualbox-iso构建器构建一个VM,并将其输出为ova格式的映像。
4.)使用你的AWS账户和aws-cli将OVA上传到您创建的存储桶中。aws s3 cp命令。
5.)将OVA注册为AMI。您将使用aws ec2 import-image命令进行此操作。(这部分可能需要很长时间30分钟-1小时)。
您可以使用aws ec2 describe-import-image-tasks跟踪进度。当完成后,AMI将出现在您的Private AMI列表中。

FYI:我在GitHub上找到了这些步骤的实现。packer-kickstart-to-ami - acampana

2

Vagrant包含一个非常有用的插件,称为vagrant-ami,它可以让你创建EC2自定义AMI:

$ vagrant create-ami new_image --name my-ami --desc "My AMI"

然后,您可以在Vagrantfile中用自定义的AMI ID替换掉原有的AMI ID。


vagrant list-commands 没有显示 create-ami。你确定它不是第三方插件吗? - MavWolverine
4
看起来答案可能涉及到vagrant-ami插件,该插件基于vagrant-aws。有关使用Vagrant插件的文档在此处 - cookrn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接