Vagrantfileとは

Vagrantfileの主な機能は

  • マシンタイプを記述する
  • マシンをどうやってプロビジョニング / コンフィグレーションするかを記述する

1プロジェクト : 1Vagrantfile
ファイル自体はバージョン管理しておけ。

VagrantfileはRubyの公文で記述するけど、Rubyの知識はなくてもいい。簡単な変数を割り当てるだけでいいので。

LOOKUP PATH

vagrantコマンドを実行すると、まずはカレントディレクトリにVagrantfileがあるかをさがす。もしなかったら、ディレクトリツリーにそって移動してfileをさがしていく。この機能によって、どのディレクトリにいてもvagrantコマンドを実行することができる。

VAGRANT_CWD環境変数を設定すれば、Vagrantfileをさがしはじめるディレクトリを変更することができる。

LOAD ORDER AND MERGING

ロードする順番と統合

VagrantがどのようにVagrantfileをロードするか、そのコンセプトは理解したほうがいい。Vagrantは、一連の、複数のVagrantfileをロードして、うまく動くようにセッティングをマージしている。なので、記載レベルの異なる複数のVagrantfileがある状態でも問題なくセッティングを上書きすることができる。Vagrantfileは以下の順番で読み込まれる。各ステップでVagrantfileが見つからない場合は、次ステップに進むようになっている。

  1. boxにパッケージされているVagrantfile
  2. ホームディレクトリのVagrantfile(default : ~/.vagrant.d)
  3. プロジェクトディレクトリのVagrantfile。だいたいこれを編集する。
  4. マルチマシーンによる上書き
  5. プロバイダによる上書き

この5つの各段階において、セッティングは前のセッティングにマージされていく。たいていのセッティングでは、新しいセッティングが古いものを上書きする。しかしながら、ネットワークのセッティングのようなものの場合は、上書きするのではなく設定が追加されていくようになっている。