存储流浪盒中的所有内容
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?
我使用 push
和 pop
因为我只需要保留 1 个快照并且总是恢复到这个快照。如果您需要在不同时间保存快照(例如每天一张),您需要使用 save
,因为您会专门为您拍摄的快照命名。
注意这个
Warning: If you are using push
and pop
, avoid using save
and restore
which are unsafe to mix.
我有一个用于开发的 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?
我使用 push
和 pop
因为我只需要保留 1 个快照并且总是恢复到这个快照。如果您需要在不同时间保存快照(例如每天一张),您需要使用 save
,因为您会专门为您拍摄的快照命名。
注意这个
Warning: If you are using
push
andpop
, avoid usingsave
andrestore
which are unsafe to mix.