问题描述
我是vagrant的新手,并建立了几个vagrant vm,用于开发和测试。我的问题是我无法在我的计算机(Ubuntu)上自动启动这些框。每当我的主机启动时,每台计算机都转到该文件夹和vagrant up
确实很烦人。
我尝试添加一个看起来像cd path/to/vm/folder && vagrant up
的cronjob,但这似乎不起作用。
我还尝试了VBoxManage
的cronjob,但每次VM启动时,vagrant都会更改VM的名称(而不是编号/版本’vmname_version’)。
最佳办法
Cron作业不适合此用例,它适用于计划的作业。
当您将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(默认)启动多个Vagrant框,则主机上将存在端口冲突;默认情况下,NAT使用默认的相同的端口转发规则。访客22主持2222。
如果需要启动多个框(NAT),请考虑使用公共网络(桥接)或使用VBoxManage controlvm
启动虚拟机,请参阅Two separate Vagrant machines, windows host, PuTTY – how?中的答案
次佳办法
这是在http://uhowto.urbylog.info/post/54097294891/an-upstart-script-to-launch-vagrant-box-automatically上找到的启动脚本
自动启动vagrant框的新贵脚本有时可能需要在主机启动时以自觉方式启动vagrant虚拟机。同样,在关闭或重新启动主机时为访客提供正常关机。以下是一个新手脚本的示例,该脚本用于代表randomjoe用户启动/停止无业游民的盒子。在下面的脚本中更改用户名和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