22

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

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

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

4

4 回答 4

16

Cron 作业不适合此用例,它适用于预定作业。

当您将 Ubuntu 作为主机运行时,我建议使用/etc/rc.local,将命令放在在rc.localinit 进程结束时执行的脚本中。

看起来像这样

#!/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(默认),默认情况下使用相同的端口转发规则 => 来宾 22 到主机 2222。

如果需要启动多台机器(NAT),考虑使用公网(桥接)或者使用VBoxManage controlvm启动虚拟机,参考两台独立的 Vagrant 机器,windows 主机,PuTTY - how?

于 2013-08-07T13:06:24.187 回答
7

这是在http://uhowto.urbylog.info/post/54097294891/an-upstart-script-to-launch-vagrant-box-automatically找到的启动脚本

自动启动 vagrant box 的 upstart 脚本有时可能需要在主机启动时自动启动 vagrant 虚拟机。同样,在主机关闭或重新启动时为来宾提供正常关闭。下面是一个代表 randomjoe 用户启动/停止 vagrant box 的 upstart 脚本示例。在下面的脚本中更改用户名和 Vagrantfile 目录。描述性地命名您的新贵配置文件。为您需要在系统启动时启动并运行的每个 Vagrantfile 创建一个 /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
于 2014-07-06T02:00:17.293 回答
0

我最终克隆了虚拟机,VboxManage并仅VBoxManage startvm $vm --type headless在 init.d 脚本中使用

于 2013-08-08T17:27:04.620 回答
0

我最终完成了一个简单的 cron 工作。我不得不进入睡眠状态,否则 Virtualbox 抱怨它没有正确初始化。

@reboot cd /home/myuser/VMs/VagrantBox && sleep 20; /bin/su -c "/usr/bin/vagrant up" myuser
于 2016-04-25T08:11:50.673 回答