如何使用Packer与Box文件?

5

我有一个Vagrantfile,使用VirtualBox上的一个盒子和一个provision脚本。

现在我正在尝试使用packer输出已经完成provision的盒子。

然而,我无法找到一个builder来使用我已经有的".box"文件。我做错了什么?

3个回答

3
我刚刚找到了一个解决方案,可以将vagrant的.box文件转换为.ova文件以供packer使用:
1. 使用.box文件作为基础创建虚拟机。我使用以下Vagrantfile文件和box opscode-centos-7.0
    $provisioning_script = <<PROVISIONING_SCRIPT
    adduser packer
    echo "packer" | passwd packer --stdin
    echo "packer ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/packer
    PROVISIONING_SCRIPT
Vagrant.configure(2) do |config| config.vm.box = "opscode-centos-7.0" config.ssh.insert_key = false config.vm.provider "virtualbox" do |v| v.name = "packer-base" end config.vm.provision :shell, inline: $provisioning_script end
2. 运行vagrant up 3. 运行vagrant halt 4. 运行vboxmanage export --ovf20 -o packer-base.ova packer-base 5. 运行vagrant destroy 这还会创建一个名为packer的用户,并设置默认密码,以便packer可以轻松连接到实例并执行操作。请注意insert_key参数,它将防止替换vagrant默认的不安全密钥,并允许后续vagrant设置通过SSH正确连接到新映像(在packer完成后)。

0

默认情况下,Packer不支持使用Vagrant boxes作为输入(尚未支持)。

但是有一个自定义插件,请参见this comment


虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,链接答案可能会失效。 - Daniel Puiu

-1

如果您想构建一个使用虚拟机提供程序 virtualbox 的 vagrant box,请查看 这里

然而,它需要一个 isoovf 作为输入,而不是一个 vagrant box。

查看 这些模板,以便使用 packer 和 virtualbox builder 开始。

确保运行 后处理器 将 virtualbox vm 转换为 vagrant box。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接