正在主机启动上启动Vagrant VM



我是流浪者的新手,已经建立了几个流浪者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

最新更新