带有 vagrant 后处理器的打包程序“找不到 ovf 文件”
Posted
技术标签:
【中文标题】带有 vagrant 后处理器的打包程序“找不到 ovf 文件”【英文标题】:Packer with vagrant post-processor "ovf file couldn't be found" 【发布时间】:2021-05-13 17:33:39 【问题描述】:我是打包机新手。我听说您可以添加一个 vagrant 后处理器来为您提供一个简单的 VM 来测试您的新图像。基于示例等,我认为下面的代码可以工作。但是,我收到此错误。
* Post-processor failed: ovf file couldn't be found
这是我的打包程序配置/代码。
source "digitalocean" "test"
image = "ubuntu-20-10-x64"
region = "nyc1"
size = "s-1vcpu-1gb"
snapshot_name = "me-image-isotime \"2006-01-02T15:04\""
snapshot_regions = [
"nyc1", "sgp1", "lon1", "nyc3", "ams3", "fra1", "tor1", "sfo2", "blr1",
"sfo3"
]
tags = ["delete"]
ssh_username = "root"
# a build block invokes sources and runs provisioning steps on them.
build
sources = ["source.digitalocean.test"]
provisioner "file"
source = "jump_host"
destination = "/tmp"
post-processor "vagrant"
keep_input_artifact = true
provider_override = "virtualbox"
output = "out.box"
我的打包器版本是 1.6.6 我的流浪版本是 2.2.10
【问题讨论】:
似乎您可以删除provider_override = "virtualbox"
部分,Packer 将创建一个具有 aws
提供程序的框,而不是您必须为 aws 提供程序创建一个插件,这可能会起作用。 Vagrant 文件必须包含: Vagrant.configure("2") do |config| config.vm.provider :aws 做 |aws| aws.ami = "ami-7747d01e" end end
【参考方案1】:
有相同的(ish)问题 - 通过蛮力/机会找到答案
所以我和你在同一条船上,但我设法找到了我的解决方案的提示here
警告:我正在使用导出的 .vmdk
,所以这可能不是您的解决方案,因为您正在寻找一种直接从数字海洋中获取它的方法? p>
提示
build
sources = ["source.null.autogenerated_1"]
post-processor "shell-local"
inline = ["echo Doing stuff..."]
post-processors
post-processor "vagrant"
--> include = ["image.iso"]
output = "proxycore_.Provider.box"
vagrantfile_template = "vagrantfile.tpl"
post-processor "vagrant-cloud"
access_token = "$var.cloud_token"
box_tag = "hashicorp/precise64"
version = "$local.version"
Vagrant Post-Processor 页面上没有列出它,但它在 Vagrant Cloud Post-Processor 上。我只是决定试试运气,它奏效了。
工作示例
source "null" "example"
communicator = "none"
build
sources = ["source.null.example"]
post-processor "artifice"
files = ["example-disk001.vmdk", "example.ovf"]
keep_input_artifact = true
post-processor "vagrant"
include = ["example-disk001.vmdk", "example.ovf"]
keep_input_artifact = true
provider_override = "virtualbox"
【讨论】:
【参考方案2】:Tl;dr 这是不可能的
我希望打包者做的是为 digitalocean 构建一些东西,然后给我一份副本,这样我就可以测试它,而无需从 digitalocean 购买虚拟机,也无需互联网。这是不可能的,经过一番思考,这是有道理的。
Digitalocean 不仅仅是下载 Ubuntu 20 ISO 并将其扔到他们的服务器上。他们配置和更改图像,以便在他们的硬件上进行优化。期望他们的特殊映像在消费硬件上运行的某些标准 VM 上运行是不现实的。另外,我不确定是否有办法从 DO 下载快照。
但在尝试这样做时,我有点错过了 vagrant 的全部意义。如果我正在测试 digitalocean 图像,我将始终需要连接和支付 digitalocean。 Vagrant 旨在让我可以轻松地做到这一点,而不必每次都点击界面。所以我什至不应该尝试在我的家用电脑上安装它。
PS:非常感谢您 @RedGrin-Grumble 花时间添加到这个几个月前的帖子。
【讨论】:
以上是关于带有 vagrant 后处理器的打包程序“找不到 ovf 文件”的主要内容,如果未能解决你的问题,请参考以下文章
IDEA使用Maven工具打包带有外部jar包时出错 - 提示程序包不存在和找不到符号