我是流浪者的新手,已经建立了几个流浪者vm,用于开发和测试目的。我的问题是,我无法让这些盒子在我的机器(Ubuntu)上自动启动。每次我的主机启动时,都会去文件夹和每台机器的vagrant up
,这真的很烦人。
我尝试添加一个看起来像cd path/to/vm/folder && vagrant up
的cronjob,但似乎不起作用。
我还尝试了VBoxManage
的cronjob,但每次VM启动时,流浪者都会更改VM的名称(而不是编号/版本"vmname_version")。
Cron作业不适合此用例,它适用于计划作业。
当您将Ubuntu作为主机运行时,我建议使用/etc/rc.local
,将命令放在rc.local
脚本中,该脚本在init进程结束时执行。
它看起来像这个
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
cd /path/to/vagrant_vm1 && vagrant up
cd /path/to/vagrant_vm2 && vagrant up
exit 0
注意:如果使用相同的网络模式-NAT(默认)启动1个以上的Vagrant盒子,则主机上会出现端口冲突,默认情况下,这些盒子使用相同的端口转发规则=>来宾22到主机2222。
如果您需要启动1个以上的盒子(NAT),请考虑使用公共网络(桥接)或使用VBoxManage controlvm
来启动虚拟机,请参阅两个独立的Vagrant机器、windows主机、PuTTY中的答案-如何?
下面是一个启动脚本,位于http://uhowto.urbylog.info/post/54097294891/an-upstart-script-to-launch-vagrant-box-automatically
一个自动启动流浪箱的新贵脚本有时可能需要在主机引导时自动启动流浪虚拟机。类似地,当主机被关闭或重新启动时,为来宾提供一个优雅的关闭。下面是一个代表randomjoe用户启动/停止流浪箱的暴发户脚本示例。在下面的脚本中更改用户名和Vagrantfile目录。描述性地命名您的新贵配置文件。为您需要的每个Vagrantfile创建一个/etc/init/*.conf文件,并在系统启动时运行。/etc/init/warrant-precise32.conf:
description "Start vagrant precise32 box on system startup"
author "uHOWTO"
env VAGRANTUSR=randomjoe
env VAGRANTBOXPATH=/home/randomjoe/vagrantboxes/precise32
start on stopped rc
stop on runlevel [016]
pre-start script
cd ${VAGRANTBOXPATH}
su -c "/usr/bin/vagrant up" ${VAGRANTUSR}
end script
post-stop script
cd ${VAGRANTBOXPATH}
su -c "/usr/bin/vagrant halt" ${VAGRANTUSR}
end script
我最终完成了一个简单的cron作业。我不得不进入睡眠状态,否则Virtualbox抱怨它没有正确初始化。
@reboot cd /home/myuser/VMs/VagrantBox && sleep 20; /bin/su -c "/usr/bin/vagrant up" myuser
我最终用VboxManage
克隆了VM,只在init.d脚本中使用了VBoxManage startvm $vm --type headless