首页 > 解决方案 > 构建不同类型的虚拟机映像的方法

问题描述

在 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 结束吗?

Vagrant 还是 Ansible 更适合这个?

标签: ansiblecontinuous-integrationvagrantcontinuous-deploymentpacker

解决方案


这是我收集到的。

我发现了一个文档很好的方法,它从 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 或模板。


推荐阅读