talesleaves-dev

諸々の開発のメモ。画像は面倒

Vagrantの仮想環境を設定する

Vagrantの設定について

Vagrantは設定を柔軟に変更できるようにデザインされています。
それだけに設定項目も多いのですが、ここでは仮想マシン自体の設定について、必要と思われる項目を調べます。

設定ファイル-Vagrantfile

Vagrantで管理される仮想環境の設定はvagrant init box-nameでプロジェクトフォルダ内に作成されるVagrantfileに記述されます。
initで生成されるファイルはそれなりの行数がありますが、実際に有効になっている設定は仮想マシンのベースにするboxの指定だけです。
これだけの状態でも、起動させて仮想マシンのOSにSSH接続することが可能です。
コメントアウトされている設定項目についても簡単に説明が付記されていますので、一度目を通すのが良いかと思います。
また、Ruby言語で記述されていますので、そちらに詳しい方はわかりやすいのかもしれません。

Vagrantへのローカルな設定

Vagrantのローカル環境での動作の設定の一部は、ホスト側の環境変数を使います。
例えばVagrantが内部的に利用しているboxの実体データなどはVAGRANT_HOMEで指定されたフォルダに保存されます。
デフォルトではホストOSのユーザーフォルダの.vagrant.dという隠しフォルダが指定されています。
環境変数について詳しくはEnvironmental Variables - Vagrant by HashiCorpを参照してください。

Vagrantfileの構成

Vagrantfileはいくつかのパート*1に分かれています。
基本的にはconfig.vmのパートで仮想マシンへの設定を行います。
このほかに、config.ssh、config.vagrantと言った、仮想マシンそのものではなく、ホスト側の環境を設定する部分もあります。
詳細は公式のVagrantfileページに譲るとして、config.vmの中から、覚えておきたい設定項目を見ていきます。

config.vm.box

仮想マシンのベースになるOSのイメージを指定します。
利用出来るBoxは
Discover Vagrant Boxes - Vagrant Cloudで探すことが出来ます。

config.vm.network

ネットワーク周りの設定です。
Providerによって利用可能な設定が異なってくるため、公式サイトでも別章
Networking - Vagrant by HashiCorp
を設けて説明しています。
通常はport_fowordを利用して、ホスト側の特定のポートからゲスト側の特定のポートに接続できるように設定します。

config.vm.provider

仮想マシンのProviderを指定します。
デフォルトではVirtualBoxが指定されており、そのまま使用しても問題ありません。
また、使用するProviderをvagrant upのオプションとして指定して、このパートで処理を切り替えるなども可能です。
これもかなりボリュームのある項目となり、
Providers - Vagrant by HashiCorpで設定を含めた諸情報を確認できます。

config.vm.synced_folder

ホストOSとゲストOSの間でフォルダを共有するための設定項目です。
デフォルトで使用するとVagrantのプロジェクトフォルダ全体が共有されます。個人的にこれは好みではないので、以下のようにデフォルトの設定を無効にしています。

config.vm.synced_folder ".", "/vagrant", disabled: true

また、ProviderにVirtualBoxを使用している場合、ゲストOSにVirtualBox Guest Additionsをインストールしていない状態でデフォルト以外の設定を追加すると、エラーが発生します。
VirtualBoxを使用するときにはvagrant-vbguestプラグインをインストールしておくとよいでしょう。

設定の基本方針

Vagrantは非常に柔軟に設定を行うことが出来ますが、それらをすべて1度に完全な状態に持っていくことは非常に難易度が高いです。
幸い、Vagrantは自動化により試行錯誤が簡単に行えるツールです。その利点を最大限に生かすためには、恐れずトライ&エラーすることだと思います。
目標を定めて、項目を一つ変更したらvagrant upしてみて結果を確認する、そして失敗したらdestroyして修正する、を繰り返すようにしましょう。

*1:正確にはnamespase