よく使うVagrantfileの設定のまとめ

はじめに

Vagrantfileで良く使う記述をまとめておきます。

環境と前提

  • ホストマシン:Mac OS X Yosemite
  • 仮想環境ソフトウェア:VirtualBox 4.3.2
  • vagrant:1.7.2


ホストマシンとゲストマシンの共有フォルダの設定

共有フォルダを使いたい場合は以下のようにconfig.vm.synced_folderを記述します。

上記の場合は、ホストマシン側の共有フォルダのパスを.、すなわちVagrantfileがあるフォルダとなります。仮想マシン側の共有フォルダのパスは/vagrantとなります。また、:mount_optionsによって、ホストマシン側で共有フォルダ上に作成したフォルダおよびファイルの仮想マシン側でのアクセス権を指定しています。
上記の場合は、ホストマシン側で共有フォルダ上に作成したフォルダ、ファイルの仮想マシン側でのアクセス権はすべて777、すなわちフルアクセスになります。ここは各自の状況に合わせて設定すればいいと思います。

仮想マシンに割り当てるメモリ量の設定

以下のようにvb.memoryでメモリ量を指定できます。単位はMBです。


ネットワークの設定

Vagrantfileで指定できるネットワーク設定として以下の5つをメモしておきます。

  • NAT(vagrantのデフォルト)
  • ホストオンリーアダプタ
  • 内部ネットワーク
  • ブリッジアダプター
  • ポートフォワーディング


NAT(vagrantのデフォルト)

Vagrantfileがデフォルトの状態の場合、仮想マシンには以下のように「NAT」アダプターが1つ付加されている状態になります。
NAT
この状態の仮想マシンのping到達可否は以下表のようにになります。以下の表で「VM」は仮想マシンを指します。

Table1 ping到達可否(NAT)

ネットワーク種別 VM→ホストマシン ホストマシン→VM VM→外部 外部→VM VM同士
NAT

※ 上記表での「外部」とは、ホストマシン以外のマシンを意味します。
※ 上記表での「VM同士」は、同じネットワーク種別に属する仮想マシン同士の通信です。

ホストオンリーアダプタ

Vagrantfileにconfig.vm.network "private_network"の記述を加えた場合は、仮想マシンに以下のように「ホストオンリーアダプター」がデフォルトの「NAT」アダプターに加えて追加されます。
hostonlyadapter
以下に静的IPアドレス、動的IPアドレスの場合の具体的な記述を載せます。

静的IPアドレスを割当

DHCPによって動的IPアドレスを割当

下記のように記述することでDHCPによる割り当ても可能です。

この場合のping到達可否は以下のようになります。

Table2 ping到達可否(NAT+ホストオンリーアダプター)

ネットワーク種別 VM→ホストマシン ホストマシン→VM VM→外部 外部→VM VM同士
ホストオンリー

※ 上記表での「外部」とは、ホストマシン以外のマシンを意味します。
※ 上記表での「VM同士」は、同じネットワーク種別に属する仮想マシン同士の通信です
※ 赤部分はデフォルト(NAT)のみの場合との差異

PRIVATE NETWORKS | VAGRANT DOCS


内部ネットワーク

Vagrantfileにconfig.vm.network "private_network"virtualbox__intnet:のオプションを指定した場合、仮想マシンに以下のように「内部ネットワーク」アダプターがデフォルトの「NAT」アダプターに加えて追加されます。
internalnet

内部ネットワーク名を指定する場合

以下のように記述することで、「mynetwork」という名前の内部ネットワークが作成されます。同じ名前の内部ネットワークに属する仮想マシン同士が通信可能となります。


内部ネットワーク名を指定しない場合

なお、以下のように内部ネットワーク名を指定せず、trueを指定した場合は、「intnet」という名前になります。

internal-intnet

この場合のping到達可否は以下のようになります。

Table3 ping到達可否(NAT+内部ネットワークアダプター)

ネットワーク種別 VM→ホストマシン ホストマシン→VM VM→外部 外部→VM VM同士
内部ネットワーク

※ 上記表での「外部」とは、ホストマシン以外のマシンを意味します
※ 上記表での「VM同士」は、同じネットワーク種別に属する仮想マシン同士の通信です
※ 赤部分はデフォルト(NAT)のみの場合との差異

ブリッジアダプター

Vagrantfileにconfig.vm.network "public_network"の記述を加えた場合、仮想マシンに以下のように「ブリッジアダプター」がデフォルトの「NAT」アダプターに加えて追加されます。
bridge
以下に静的IPアドレス、動的IPアドレスの場合の具体的な記述を載せます。

静的IPの割り当て

DHCPによってIPアドレスを割当

ブリッジするインターフェースの指定

もし上記のようにブリッジするインターフェースを指定しなかった場合、以下のようにvagrant upの途中で毎回聞かれます。

この場合のping到達可否は以下のようになります。

Table4 ping到達可否(NAT+パブリックネットワークアダプター)

ネットワーク種別 VM→ホストマシン ホストマシン→VM VM→外部 外部→VM VM同士
ブリッジアダプター

※ 上記表での「外部」とは、ホストマシン以外のマシンを意味します
※ 上記表での「VM同士」は、同じネットワーク種別に属する仮想マシン同士の通信です
※ 赤部分はデフォルト(NAT)のみの場合との差異

PUBLIC NETWORKS | VAGRANT DOCS


ポートフォワーディング

Vagrantfileにconfig.vm.network "forwarded_port"の記述を加えた場合、新たにネットワークアダプターは追加されませんが、以下のようにポートフォワーディングのルールが追加されます。
portforwarding2
以下の記述によって上の画像と同じようにホストマシンの1235番ポート宛のアクセスが仮想マシンの80番ポートにフォワードされます。

なお、ポートフォワーディングの場合はping到達可否のNATの場合と同じになります。

トラブルシューティング

vagrantが吐き出すエラーで詳細が不明な場合は、以下のようにvb.gui = trueに記述することで、仮想マシンのGUI画面を表示してくれるのでエラーの詳細を確認でき、原因を推測しやすくなると思います。


おわりに

Vagrantfileで指定できる設定はまだまだたくさんあるようです。もし上記の内容で間違っている箇所等あったらご指摘頂けると助かります。

このエントリーをはてなブックマークに追加

SPONSORED LINK

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。

この投稿へのトラックバック

  1. vagrantを使った仮想マシンの作成手順 said on 2015年3月26日 at 00:28

    […] なお、Vagrantfileで指定できる仮想マシンの設定についてよく使うものをこちら(よく使うVagrantfileの設定のまとめ)にまとめたので必要な方はみてみてください。 […]

トラックバック URL