Packer + Vagrant - 从ISO创建AMI

时间:2014-10-13 16:59:03

标签: vagrant iso ami packer

是否可以从ISO创建AMI?

我正在实现一个构建系统,该系统使用基本iso,修改它,安装东西,然后在.ovf和AMI中输出。

.ovf有效。但对于AMI,我能想到的只是它需要预先存在的AMI。这是对的吗?

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

感谢。

2 个答案:

答案 0 :(得分:3)

当你从ISO说,告诉我你正在寻找创建一个可信的基础VM。您希望首先从本地安装,然后将其作为受信任的私有AMI导入ec2。如果您不介意使用veewee,那么在这里使用veewee代替打包器的帖子很棒:veewee这是CentOS的全部设置。您需要做的就是克隆它并根据您的用例调整它。

但是既然你像我一样正在寻找打包器,那么你需要的是打包器中的virtualbox-iso构建器和一些aws-cli命令来上传和创建OVA中的AMI。不幸的是,Packer并没有这样的后处理器。然后你可以使用vagrant引用新的AMI进行基于ec2的开发,并使用vagrant-aws插件从你可信赖的基础ami中创建新的ami。

以下是要遵循的步骤:

1。)为图像导入创建一个S3存储桶。

2.。)设置您的AWS账户。创建' vmimport' IAM角色和策略以及X509密钥和证书对,以防您没有。您需要注册私人AMI。您还将参考该策略的存储桶名称。

3.使用packer的virtualbox-iso构建器使用VirtualBox构建VM并让它以ova格式输出图像。

4.。)使用aws-cli和你的aws帐户将OVA上传到你创建的桶中。 aws s3 cp命令。

5.)将OVA注册为ami。您将使用aws ec2 import-image命令。 (这部分可能需要很长时间30分钟 - 1小时)。

您可以通过以下方式跟踪进度:aws ec2 describe-import-image-tasks AMI将在完成后显示在您的私人AMI列表中。

答案 1 :(得分:1)

Vagrant包含一个名为vagrant-ami的有用小插件,可让您创建EC2自定义AMI:

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

然后,您可以使用自定义文件替换Vagrantfile中的AMI ID。