gpt4 book ai didi

vagrant - 使用 Packer 从 Vagrant 盒创建 VM 镜像?

转载 作者:行者123 更新时间:2023-12-04 18:37:57 27 4
gpt4 key购买 nike

我知道我可以使用 Packer以脚本方式创建我自己的 VM 镜像。如果我使用 VirtualBox 构建器,我可以从两种风格中选择一种:从头开始构建所有内容,或在现有 VM 之上构建。

基本上,我想要实现的是在现有的 Vagrant 框(带有 Docker 的 Boxcutter 的 Ubuntu 15.04)之上构建。

这是否可以使用 Packer,如果可以,如何实现?我在文档中找不到任何关于此的内容。示例始终仅引用 OVF/OVA 文件。任何提示?

最佳答案

这实际上并不是 Packer 本身支持的工作流,但是您可以编写一个小的 shell 脚本来下载 Vagrant 框,导出 OVF,然后启动 Packer 的 virtualbox-ovf build 者。

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

#!/bin/sh

vagrant init boxcutter/ubuntu1504-docker
vagrant up --provider virtualbox --no-provision
vagrant halt

rm -rf output-virtualbox-ovf
packer build packer.json

打包器.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"
}]
}

这将创建一个新的 Vagrant 盒子,打包在 box/modified-boxcutter-VAGRANTSLASH-ubuntu1504-docker.box 中。 .

关于vagrant - 使用 Packer 从 Vagrant 盒创建 VM 镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31255737/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com