我有一个Vagrantfile,使用VirtualBox上的一个盒子和一个provision脚本。
现在我正在尝试使用packer输出已经完成provision的盒子。
然而,我无法找到一个builder来使用我已经有的".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_SCRIPT2. 运行
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
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完成后)。默认情况下,Packer不支持使用Vagrant boxes作为输入(尚未支持)。
但是有一个自定义插件,请参见this comment。