Dar*_*ord 6 virtualbox ubuntu vagrant
Vagrant 的相对新手,每次我想启动一个新的 Ubuntu VM 时都试图避免手动完成安装过程。
我通常的过程是,完成安装后,使用apt-get update
和更新机器的所有软件apt-get dist-upgrade -y
,然后重新启动以确保所有升级生效。为此,我制作了一个 Vagrantfile,如下所示:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.provider "virtualbox" do |vb|
vb.memory = "4096"
end
config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get dist-upgrade -y
shutdown -r now
SHELL
end
Run Code Online (Sandbox Code Playgroud)
这主要完成了这项工作——我可以在包更新时看到 VM 的输出——但是在它重新启动并vagrant ssh
进入之后,我的文件都没有出现在/vagrant
. 我假设由于某种原因没有重新安装共享文件夹。
我想我的第一个问题是:作为 shell 配置器的一部分更新这样的系统是否有意义?如果是这样,我如何重新启动来宾并仍然/vagrant
安装共享?
小智 6
如果您只想在配置完成后重新启动(而不是在配置步骤之间),您可以使用触发器来实现此目的:
config.trigger.after [:provision] do |t|
t.name = "Reboot after provisioning"
t.run = { :inline => "vagrant reload" }
end
Run Code Online (Sandbox Code Playgroud)
这具有不需要安装插件的优点。
有关触发器的更多信息,请点击此处。
小智 6
假设您的来宾虚拟机可以处理它,那么使用内置的 Shell Provisioner 重新启动可能是一个不错的选择。更多相关信息请参见此处。在更改日志中查找重新启动,以了解何时添加和改进此功能。
示例块:
config.vm.provision :shell do |shell|
shell.privileged = true
shell.inline = 'echo rebooting'
shell.reboot = true
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8964 次 |
最近记录: |