从文件“test.box”创建“Vagrantfile”后,我将编辑文件“Vagrantfile”插入例如:
config.vm.provision: shell, path: './test.sh'
完成此操作后,如何将更改保存到文件 test.box?
从文件“test.box”创建“Vagrantfile”后,我将编辑文件“Vagrantfile”插入例如:
config.vm.provision: shell, path: './test.sh'
完成此操作后,如何将更改保存到文件 test.box?
如果我理解正确的话。
您可以使用您的 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"
}
]
我不确定我是否完全理解这个问题,但让我解释一下:
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 中使用它。
我的目标是每次运行命令“vagrant up / vagrant provision”时运行一个文件外壳。
为此,我执行了以下操作:
我(使用 Packer)创建了文件“test.box”
使用命令“init test.box vagrant”,我创建了 Vagrantfile。
在这一步中,我编辑了 Vagrantfile 输入的文件,例如:
config.vm.provision: shell, path: './file.sh'
这样每次我运行命令“vagrant up / vagrant provision”时,他都会执行“file.sh”。
我的问题是我不明白如何保存此更改。