在主机启动时启动Vagrant VM

时间:2013-08-07 08:35:04

标签: ubuntu vagrant boot

我是流浪汉的新手并且已经设置了一些我用于开发和测试目的的流浪者vm。我的问题是我不能让这些盒子在我的机器上自动启动(Ubuntu)。每次我的主机启动时,去每个机器的文件夹和vagrant up真的很烦人。

我尝试添加一个类似cd path/to/vm/folder && vagrant up的cronjob,但这似乎不起作用。

我还尝试了VBoxManage的cronjob,但每次VM启动时,vagrant都会更改VM的名称(而不是数字/版本'vmname_version')。

4 个答案:

答案 0 :(得分:12)

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

注意:如果您使用相同的网络模式启动多于1个Vagrant框,则主机上将存在端口冲突 - NAT(默认),默认情况下使用相同的端口转发规则=&gt ;嘉宾22日主持2222。

如果您需要启动多个方框(NAT),请考虑使用公共网络(桥接)或使用VBoxManage controlvm启动虚拟机,请参阅Two separate Vagrant machines, windows host, PuTTY - how?中的答案

答案 1 :(得分:7)

这是在http://uhowto.urbylog.info/post/54097294891/an-upstart-script-to-launch-vagrant-box-automatically

找到的启动脚本

自动启动流浪者盒的新手脚本 有时可能需要在主机启动时自动启动流浪虚拟机。同样,在关闭或重新启动主机时为guest虚拟机提供正常关闭。 下面是代表randomjoe用户启动/暂停流浪盒的新手脚本示例。 在下面的脚本中更改用户名和Vagrantfile目录。描述性地命名您的upstart配置文件。为系统启动时需要启动并运行的每个Vagrant文​​件创建一个/etc/init/*.conf文件。 /etc/init/vagrant-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

答案 2 :(得分:0)

我最终使用VboxManage克隆VM并在init.d脚本中使用VBoxManage startvm $vm --type headless

答案 3 :(得分:-1)

我最终得到了一个简单的cron工作。我不得不睡觉,否则Virtualbox抱怨它没有正确初始化。

@reboot cd /home/myuser/VMs/VagrantBox && sleep 20; /bin/su -c "/usr/bin/vagrant up" myuser
相关问题