LoginSignup
21
21

More than 5 years have passed since last update.

Vagrant Tips#1 ローカルにあるboxをVagrantfileから自動的に読み込む

Last updated at Posted at 2014-07-20

Vagrant Tipsのサマリページはこちら

この記事のサマリ

Vagrantでboxを取得する際に、ネットワークに接続せずにディレクトリから直接取得したい場合は、スキーム名に「file」を指定して、file://[ディレクトリ]のように指定すると実現できます。

対象読者

例えば、プロジェクト等でvagrantを利用していて、メンバー全員がhttpで外部にboxを取得するのは、ネットワーク負荷的にもネチケット的にも避けたいような場合で、共有ディレクトリにboxを置いて管理してみようかなといった方を対象としています。

動作確認バージョン

vagrant versionの結果↓
Installed Version: 1.7.4

経緯

vagrantを、チームのみんなに使ってもらうといった場合に、ネットワークに負荷がかるの嫌だなぁと思い、何か対策が無いかなぁと思って、考えた案の一つです。

ローカルにあるboxをVagrantfileから自動的に読み込む

Vagrantでは、boxと呼ばれる仮想マシンをパッキングしたものを利用します。boxは、自分でカスタマイズしたものを作成することもできますが、以下のサイトに有志の方々が良く使うboxを公開してくださっています。
- http://www.vagrantbox.es/
通常boxを利用する場合、以下のような流れで仮想マシンを起動します。
1.「vagrant init <boxの名前(1)> <boxの取得先URL(2)>」というコマンドで、Vagrantfileを作成
2.「vagrant up」というコマンドで、(1)で指定した名前のboxがVagrant本体に登録済み出なかった場合は、(2)で指定したURLからboxをダウンロードし、Vagrant本体に(1)の名前でboxを登録

ダウンロードされるのは、最初の1回だけですので、個人で利用する分には、(2)で外部にhostingされているサイトからダウンロードして実行するで問題ありません。
しかし、大規模なシステム開発を対象とした場合、全員がboxをダウンロードするのは、ネットワーク負荷を考えると、よろしくありません。
上記負荷を避けようとした場合、たとえば共有ファイルサーバなどにboxを配置してLANに閉じて作業をするといった対策案が挙げられます。
具体的には、Vagrantfileを以下のように設定することで、実現可能です。(下記の例は、ローカルマシンにダウンロードしたboxを利用していますが、ネットワークドライブを指定することも可能です。)

Vagrantfile
# centos64_6_5という名前のboxが無かったら、
#./box/opscode_centos-6.5_chef-provisionerless.boxからboxを登録して利用する
Vagrant::Config.run do |config|
  config.vm.box = "centos64_6_5"
  config.vm.box_url = "file://./box/opscode_centos-6.5_chef-provisionerless.box"
end

上記のように、box_urlに、「file://」+「boxへのファイルパス」と記述してあげるのがポイントです。こうすれば、ローカルのファイルやネットワークドライブのファイルを直接参照することができます。(LAN内にwebサーバを建てて、boxをhostingする必要もありません。)

21
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
21