Packer - 1st:如何在机器中创建文件。第二:将机器导出到ova文件

Packer - 1st: How to create a file in the machine. 2nd: Export machine to ova file

我使用 Packer 创建一个模板文件,该文件通过 API 部署到我们的提供商。

该模板是使用 kickstart anaconda-ks.cfg.

从 CentOS 7.4 最小 ISO 文件构建的

在那个 kickstart 文件中,我正在配置要在我的模板中安装的包,在 kickstart 文件的 post-config 部分,我 运行 不同的 bash 命令来配置它。在这个 post-config 上,我还 运行 一些 cat > /path/file.sh <<EOF 将一些文件放在磁盘上。

第一名

其中一个文件非常大,虽然我尝试将其拆分成多个部分,但最后一个文件冻结了模板创建。我看不出我的代码有什么问题。在我看来,最后一个 cat >> /path/file.sh <<EOF 只是冻结了 Packer 的工作。

问题是是否有像 Terraform 中那样的任何方法来使用 Packer 目录结构中某处的模板文件,该文件将用作在我的模板中创建该 /path/file.sh 文件的源.

第二名

模板完成后,我需要将其导出到 .ova 文件,因为我的提供商不接受任何其他文件类型。

在我的 json 文件中,我使用的是构建器类型 virtualbox-iso 和 post-处理器类型 vagrant,我想知道我该如何做最后一个部分 - 导出到 ova。

我的第一个想法是使用 ovftool,但由于我是 packer 的新手,我不知道如何将其插入到我的 Packer 代码中。

请帮忙。

谢谢。

  1. 使用file provisioner
  2. 在您的模板中设置 "format": "ova" 并删除 vagrant post-处理器,除非您也需要一个 vagrant box。 *) 见 virtualbox-iso: format

*) 如果你真的需要,你应该 运行 一个 shell-local post-provisioner 与 vagrant 并行将 ovf 转换为 ova 而不是设置格式,因为 vagrant box 很可能必须包含 ovf。