Vagrant 使用Packer从一个流浪者盒子创建一个VM映像?

Vagrant 使用Packer从一个流浪者盒子创建一个VM映像?,vagrant,virtualbox,packer,Vagrant,Virtualbox,Packer,我知道我可以使用脚本方式创建自己的VM映像。如果我使用VirtualBox builder,我可以从两种风格中选择一种:从头开始构建一切,或者在现有VM上构建 基本上,我想实现的是在现有的Vagrant box(Ubuntu15.04和Docker by Boxcutter)的基础上构建 这是否可能使用封隔器,如果可能,如何使用?我在文档中找不到关于这方面的任何信息。示例始终仅引用OVF/OVA文件。有什么提示吗?这并不是Packer本机支持的工作流,但您可以编写一个小shell脚本来下载Vag

我知道我可以使用脚本方式创建自己的VM映像。如果我使用VirtualBox builder,我可以从两种风格中选择一种:从头开始构建一切,或者在现有VM上构建

基本上,我想实现的是在现有的Vagrant box(Ubuntu15.04和Docker by Boxcutter)的基础上构建


这是否可能使用封隔器,如果可能,如何使用?我在文档中找不到关于这方面的任何信息。示例始终仅引用OVF/OVA文件。有什么提示吗?

这并不是Packer本机支持的工作流,但您可以编写一个小shell脚本来下载Vagrant box,导出OVF,然后启动Packer的生成器

shell脚本(注意这是硬编码到box的1.1.0版本)

packer.json

{
  "variables": {
    "home": "{{env `HOME`}}"
  },
  "builders": [{
    "type": "virtualbox-ovf",
    "source_path": "{{user `home`}}/.vagrant.d/boxes/boxcutter-VAGRANTSLASH-ubuntu1504-docker/1.1.0/virtualbox/box.ovf",
    "ssh_username": "vagrant",
    "ssh_password": "vagrant",
    "ssh_wait_timeout": "30s",
    "shutdown_command": "echo 'packer' | sudo -S shutdown -P now"
  }],
  "provisioners": [{
    "type": "shell",
    "inline": ["echo 'my additional provisioning steps'"]
  }],
  "post-processors": [{
    "type": "vagrant",
    "keep_input_artifact": true,
    "output": "box/modified-boxcutter-VAGRANTSLASH-ubuntu1504-docker.box"
  }]
}

这将创建一个打包在
box/modified-boxcuter-VAGRANTSLASH-ubuntu1504-docker.box中的新的Vagrant box
a
Vagrant box add-boxcuter/ubuntu1504-docker-提供程序virtualbox
足以下载和提取Vagrant.box,而无需启动任何虚拟机,上面的启动/停止工作流框还忽略了通过启动实例创建的任何状态(即ssh主机密钥、日志文件等)。
{
  "variables": {
    "home": "{{env `HOME`}}"
  },
  "builders": [{
    "type": "virtualbox-ovf",
    "source_path": "{{user `home`}}/.vagrant.d/boxes/boxcutter-VAGRANTSLASH-ubuntu1504-docker/1.1.0/virtualbox/box.ovf",
    "ssh_username": "vagrant",
    "ssh_password": "vagrant",
    "ssh_wait_timeout": "30s",
    "shutdown_command": "echo 'packer' | sudo -S shutdown -P now"
  }],
  "provisioners": [{
    "type": "shell",
    "inline": ["echo 'my additional provisioning steps'"]
  }],
  "post-processors": [{
    "type": "vagrant",
    "keep_input_artifact": true,
    "output": "box/modified-boxcutter-VAGRANTSLASH-ubuntu1504-docker.box"
  }]
}