存储流浪盒中的所有内容

Store everything from a vagrant box

我有一个用于开发的 vagrant box (ubuntu 16.04),我做了几个 apt install 并对配置文件进行了一些更改(.ini.cnf 等.) 初始化后。现在,我对这个盒子及其内容感到满意。我想在误毁掉一切之前保存它。

我读过 this 但我不确定它是否真的是我需要的。快照是否存储所有内容?我的意思是它是否保存每个已安装的程序、每个编辑的 conf 和每个添加到共享 /vagrant 目录中的文件?

Doc 谈到 "environment",这就是为什么我不确定它是我想要的(附带问题是它是我想要的:我应该 vagrant snapshot push 还是 vagrant snapshot save ?)

vagrant package box 应该可以帮你创建一个新的盒子。

请注意,由于 vagrant 1.7+ 默认情况下 vagrant 会更改 ssh 不安全密钥,因此如果只是打包,下次启动时将无法连接。

添加以下内容: https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub

进入~/.ssh/authorized_keys

然后是运行: chmod 600 /home/vagrant/.ssh/authorized_keys chown -R vagrant /home/vagrant/.ssh

你有 3 个选项来实现你想要的:

  • 如果你想和你的队友共享同一个环境,你可以将你的VM打包成一个新的vagrant box(正如kikitux所解释的)这样你就可以上传这个盒子,你的队友就会安装根据你的盒子旋转一个新的虚拟机(这样他们就会有等效的系统)

  • 如果能够将您所做的更改放入某些脚本中,更好的选择是使用 vagrant provisioning(它可以是 bash 脚本或更复杂的 chef/puppet system) - 如果您需要在另一个系统上应用相同的定制,这很好,例如,如果您想升级 ubuntu,您可以只应用相同的配置脚本。

  • 第三,如果您在本地并且只想将其用作备份解决方案,那么新功能 vagrant 快照就是您所需要的。这是 1.8 版本中的一个很好的补充,完全可以满足您的需求。

Does a snapshot store eveything? I mean does it save each installed programs, each edited conf and each files added in the shared /vagrant dir?

是的!所有这一切 - 我只是分享我的用例:我创建了一个 oracle 数据库 VM 并导入转储文件,然后执行了一系列测试。我在 运行 测试之前拍了一张快照,我可以很容易地恢复到以前的状态,并在第二天重新 运行 测试同一个基本盒子。当我 pop 快照时,我得到与 运行 测试套件之前完全相同的状态(整个 VM,安装的 oracle,导入的转储)。

side question if it's what I want: should I vagrant snapshot push or vagrant snapshot save?

我使用 pushpop 因为我只需要保留 1 个快照并且总是恢复到这个快照。如果您需要在不同时间保存快照(例如每天一张),您需要使用 save,因为您会专门为您拍摄的快照命名。

注意这个

Warning: If you are using push and pop, avoid using save and restore which are unsafe to mix.