ansible - 构建不同类型的虚拟机映像的方法
问题描述
在 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 更适合这个?
解决方案
这是我收集到的。
我发现了一个文档很好的方法,它从 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 或模板。
推荐阅读
- linux - linux进程中的多个全局偏移表
- reactjs - Nextjs / nx Nrwl / Material UI 样式在生产中的初始渲染样式问题。有没有人遇到过这个问题?
- r - 根据另一个数据集的元素向数据集添加多个新列
- swift - 为什么 UISegmentedControl 将我图像的蓝色部分变为黑色?
- c++ - 如何使用内存以及 const char* const arr[][] 的大小是多少?C++
- javascript - 如何使用 JQuery 从外部文件中获取对象?
- java - -XX:HeapDumpPath 文件输出到远程位置
- python - 有没有更有效的方法来根据列的内容从 PyArrow 表中选择行?
- spring - 如何分别处理来自 HTTP 和 HTTPS 的请求 Spring Boot 2 在两个单独的端口上运行 Tomcat?
- google-bigquery - BigQuery:连接两个数组并在 MERGE 语句中保留不同的值