私はvagrantを初めて使用し、開発とテストの目的で使用するいくつかのvagrantvmをセットアップしました。私の問題は、これらのボックスを自分のマシン(Ubuntu)で自動的に起動できないことです。ホストマシンが起動するたびに、フォルダに移動して各マシンをvagrant up
するのは本当に面倒です。
cd path/to/vm/folder && vagrant up
のようなcronジョブを追加しようとしましたが、これは機能していないようです。
VBoxManage
のcronジョブも試しましたが、vagrantはVMが起動するたびにVMの名前(番号/バージョン 'vmname_version')を変更します。
Cronジョブはこのユースケースに適合しません。スケジュールされたジョブ用です。
Ubuntuをホストとして実行しているので、/etc/rc.local
を使用することをお勧めします。コマンドは、initプロセスの最後に実行される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
[〜#〜] note [〜#〜]:同じネットワークで複数のVagrantボックスを起動すると、ホストでポートの競合が発生しますモード-NAT(デフォルト)。デフォルトでは同じポート転送ルールを使用します=>ゲスト22からホスト2222へ。
複数のボックス(NAT)を起動する必要がある場合は、パブリックネットワーク(ブリッジ)の使用を検討するか、VBoxManage controlvm
を使用してVMを起動します。 2つの別々のVagrantマシン、Windowsホスト、PuTTY)の回答を参照してください。 -どうやって?
これは http://uhowto.urbylog.info/post/54097294891/an-upstart-script-to-launch-vagrant-box-automatically にある起動スクリプトです。
Vagrantボックスを自動的に起動するupstartスクリプトホストの起動時にvagrant仮想マシンを自動的に起動する必要がある場合があります。同様に、ホストがオフまたは再起動されているときに、ゲストに正常なシャットダウンを提供します。以下は、randomjoeユーザーに代わってvagrantボックスを起動/停止するためのupstartスクリプトの例です。以下のスクリプトでユーザー名とVagrantfileディレクトリを変更します。 upstart構成ファイルにわかりやすい名前を付けます。システムの起動時に起動して実行する必要のあるVagrantfileごとに1つの/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
結局、VMのクローンをVboxManage
で作成し、init.dスクリプトでVBoxManage startvm $vm --type headless
を使用するだけでした。