Vagrant 将更改保存到file.box上的文件

Vagrant 将更改保存到file.box上的文件,vagrant,vagrantfile,packer,vagrant-provision,Vagrant,Vagrantfile,Packer,Vagrant Provision,在我从文件“test.box”创建了“Vagrantfile”之后,我将编辑文件“Vagrantfile”,例如: config.vm.provision: shell, path: './test.sh' config.vm.provision: shell, path: './file.sh' 完成此操作后,如何保存对文件test.box的更改?我不确定是否完全理解了这个问题,但让我解释一下: Box是用于Vagrant环境的软件包格式,您可以从文档() 在此框中,vagrant将使用您

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

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

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

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

Box是用于Vagrant环境的软件包格式,您可以从文档()

在此框中,vagrant将使用您定义的vagrant文件创建VM。如果此vagrant文件定义了设置步骤,则这些步骤将在初始化vm时运行(首次运行
vagrant up
时,您还可以定义一个设置器,以便在每次启动vm时运行)

要在每次启动vm时运行provisioner,您需要

config.vm.provision :shell, :path => "./test.sh", :run => 'always'
注意:当您运行
vagrant-halt
停止虚拟机时,您只需关闭系统,以便您安装的所有内容都保留在虚拟机上,下次运行
vagrant-up
时,您在虚拟机中创建的所有内容都将可用。
vagrant destroy
会完全清除虚拟机中的所有文件,因此在运行
vagrant up
之后,虚拟机将从头开始创建


因此,现在,如果您已经对虚拟机进行了更改,并且希望将其用作新框,那么您需要使用
vagrant package
对虚拟机进行打包,您可以阅读更多信息。这将生成一个新框,您可以在新的vagrant文件中使用它。

我的目标是每次运行命令“vagrant up/vagrant provision”时都运行一个文件shell。
为此,我做了以下工作:

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

  • 使用命令'init test.box vagrant'创建Vagrantfile

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

    config.vm.provision: shell, path: './test.sh'
    
    config.vm.provision: shell, path: './file.sh'
    
    因此,每次我运行“vagrant up/vagrant provision”命令时,他都会执行“file.sh”。

    我的问题是我不明白如何保存此更改。

    如果我理解正确。
    您可以带上您的文件,进行所有必要的更改
    并将其他部分添加到packer.json文件中:

    “后处理器”:[
    {
    “类型”:“流浪者”,
    “保留输入工件”:false,
    “压缩级”:1,
    “vagrantfile_模板”:“MyCustom.vagrantfile”,
    “输出”:“box/box\u与\u custom\u vagrantfile.box”
    }
    ]