生成不同类型的虚拟机映像的方法

时间:2019-06-06 22:54:38

标签: ansible continuous-integration vagrant continuous-deployment packer

在CI / CD环境中,我有一个tar.gz文件,需要将其打包到虚拟机映像中。我想安装Ubuntu Server,安装一些软件包,安装tar.gz文件,然后将映像输出为各种EC2 / AMI和VMware OVF格式(将来可能还会输出其他格式,例如docker映像)。

我一直在寻找Packer,Vagrant和Ansible。但是我不确定这些工具中的哪一个可以帮助我完成所需的工作。

Packer听起来像是正确的解决方案,但是有关如何从VMware OVF / OVA映像开始以及如何构建EC2 / AMI映像的文档尚不清楚。还是我可以从Docker映像开始并输出EC2 / AMI映像???根据文档,似乎我需要从AMI开始并构建AMI。或者以“ .vmx”开头(实际上并没有说明OVF / OVA文件),然后构建一个OFA / OVF。但是我可以以格式A开头并以格式B结尾吗?

游荡或Ansible更好吗?

1 个答案:

答案 0 :(得分:0)

这是我收集的内容。

我找到了一个记录良好的方法,该方法从Ubuntu ISO映像开始,使用预先安装的文件进行无人值守的Ubuntu安装,然后将其作为模板部署到vSphere:

https://www.thehumblelab.com/automating-ubuntu-18-packer/

为了将其部署到vSphere,需要Jetbrains的插件。它使用vSphere / ESXi来构建模板映像。 Packer文档还使用json文件中的remote_ *关键字讨论了“在远程vSphere Hypervisor上构建”。但是我想这可以完成同样的事情。

然后要构建EC2 AMI映像,我相信您向json添加了另一个构建器。但是,我不认为您可以从与VMware Builder中相同的ISO映像开始。相反,我认为您需要从预先构建的AMI映像(由json中的source_ami字段指定)开始。

我想Packer不允许您从单一来源A开始,而扇出目标格式B,C等。如果您要构建AMI,则需要从AMI开始。如果要构建VMware映像,则需要从ISO或.vmx(我认为这意味着OVF)开始,并构建OVF / OVA或模板。