0

从文件“test.box”创建“Vagrantfile”后,我将编辑文件“Vagrantfile”插入例如:

config.vm.provision: shell, path: './test.sh'

完成此操作后,如何将更改保存到文件 test.box?

4

3 回答 3

0

如果我理解正确的话。
您可以使用您的 vagrantfile,进行所有需要的更改
并将附加部分添加到您的 packer.json 文件中:

"post-processors": [ { "type": "vagrant", "keep_input_artifact": false, "compression_level": 1, "vagrantfile_template": "MyCustom.vagrantfile", "output": "box/box_with_custom_vagrantfile.box" } ]

于 2015-10-20T13:49:49.563 回答
0

我不确定我是否完全理解这个问题,但让我解释一下:

Boxes 是 Vagrant 环境的包格式,您可以从文档 ( https://docs.vagrantup.com/v2/boxes.html )中了解有关 box 的更多信息

在此框中,vagrant 将使用您定义的 Vagrantfile 创建一个 VM。如果这个 Vagrantfile 定义了配置步骤,那些将在你初始化 vm 时运行(你第一次运行vagrant up,你也可以定义一个配置器在每次启动 vm 时运行)

要在每次启动 vm 时运行配置程序,您需要

config.vm.provision :shell, :path => "./test.sh", :run => 'always'

请注意,当您运行vagrant halt以停止 VM 时,您只需关闭系统,因此您安装的所有内容都保留在 vm 上,下次运行vagrant up您在 VM 中创建的所有内容时都将可用。 vagrant destroy确实完全清除了 vm 中的所有文件,因此当您运行vagrant up之后,vm 将从头开始创建

所以现在,如果您对 vm 进行了更改并希望将其用作新盒子,则需要使用打包vm vagrant package,您可以阅读有关package的更多信息。这将产生一个新的盒子,你可以在你的新 Vagrantfile 中使用它。

于 2015-09-10T11:30:43.687 回答
0

我的目标是每次运行命令“vagrant up / vagrant provision”时运行一个文件外壳。
为此,我执行了以下操作:

  1. 我(使用 Packer)创建了文件“test.box”

  2. 使用命令“init test.box vagrant”,我创建了 Vagrantfile。

在这一步中,我编辑了 Vagrantfile 输入的文件,例如:

config.vm.provision: shell, path: './file.sh'

这样每次我运行命令“vagrant up / vagrant provision”时,他都会执行“file.sh”。
我的问题是我不明白如何保存此更改。

于 2015-09-10T14:05:13.127 回答