Ubuntu 在主机启动时启动Vagrant VM

Ubuntu 在主机启动时启动Vagrant VM,ubuntu,vagrant,boot,Ubuntu,Vagrant,Boot,我对vagrant是新手,已经建立了两个vagrant vm,用于开发和测试目的。我的问题是我不能让这些盒子在我的机器(Ubuntu)上自动启动。每次我的主机启动时,都会转到文件夹,然后对每台机器进行vagrant up操作,这真的很烦人 我曾尝试添加一个类似于cd path/to/vm/folder&&vagrant up的cronjob,但这似乎不起作用 我还尝试了一个用于VBoxManage的cronjob,但vagrant每次启动VM时都会更改VM的名称(而不是“vmname\u ver

我对vagrant是新手,已经建立了两个vagrant vm,用于开发和测试目的。我的问题是我不能让这些盒子在我的机器(Ubuntu)上自动启动。每次我的主机启动时,都会转到文件夹,然后对每台机器进行
vagrant up
操作,这真的很烦人

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


我还尝试了一个用于
VBoxManage
的cronjob,但vagrant每次启动VM时都会更改VM的名称(而不是“vmname\u version”的编号/版本)。Cron job不适合此用例,它是用于计划作业的

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

看起来像这样

#!/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(默认)启动多个漫游框,则主机上会出现端口冲突,默认情况下,NAT使用相同的端口转发规则=>guest 22到主机2222


如果需要启动超过1个框(NAT),请考虑使用公共网络(桥接)或使用<代码> VBOXMARTION CONVVM <代码>启动VMS,参考

中的答案,我最终用
VboxManage
克隆了虚拟机,并在init.d脚本中使用了
VboxManage startvm$VM--键入headless
,以下是在

自动启动vagrant box的upstart脚本 有时,可能需要在主机启动时自动启动漫游虚拟机。类似地,在关闭或重新启动主机时为来宾提供优雅的关闭。 下面是一个代表randomjoe用户启动/停止vagrant box的upstart脚本示例。 在下面的脚本中更改用户名和文件目录。用描述性的方式命名upstart配置文件。为系统启动时需要启动并运行的每个文件创建一个/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

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

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

理论上,这就是我想要的,但是Vagrant似乎对此有一些问题,它到达“等待VM启动”,但没有成功启动它,最后出现一个错误,说“无法通过SSH连接到VM。请通过查看VirtualBox GUI来验证VM是否成功启动。”。无论如何谢谢你@ShrikantPatnaik见更新答案。我认为您启动多个vagrant Box是在解决端口冲突问题。Naa、端口和所有配置都是正确的,因为我让它们同时运行,没有任何问题,controlvm正常工作,但我必须克隆它们,因为我在回答问题时回答了这个问题。好吧,如果您使用默认NAT模式并开始使用
vagrant up
它将尝试对所有虚拟机执行端口转发(guest 22=>host 2222),会有冲突,但我意识到阻止VM启动可能还不够糟糕。在指定vagrant命令的完整路径并从用户处运行vagrant后,这在ubuntu 16.04中对我有效,vagrant最初与用户一起使用。命令看起来是这样的:cd/path/to/vagrant_vm1&&su-c“/usr/bin/vagrant up”myusers既然你对
VBoxManage
VBoxHeadless
感到满意,那么vagrant就不在考虑之列了。差不多,但我确实认为它有点黑客味。