Vagrantの仮想環境を設定する
Vagrantの設定について
Vagrantは設定を柔軟に変更できるようにデザインされています。
それだけに設定項目も多いのですが、ここでは仮想マシン自体の設定について、必要と思われる項目を調べます。
設定ファイル-Vagrantfile
Vagrantで管理される仮想環境の設定はvagrant init box-nameでプロジェクトフォルダ内に作成されるVagrantfileに記述されます。
initで生成されるファイルはそれなりの行数がありますが、実際に有効になっている設定は仮想マシンのベースにするboxの指定だけです。
これだけの状態でも、起動させて仮想マシンのOSにSSH接続することが可能です。
コメントアウトされている設定項目についても簡単に説明が付記されていますので、一度目を通すのが良いかと思います。
また、Ruby言語で記述されていますので、そちらに詳しい方はわかりやすいのかもしれません。
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
VagrantのPluginについて
Vagrantの機能の拡張
Vagrantは標準でも便利な機能が多数搭載されていますが、実際に使用するにあたって複雑な設定が必要になったり、ProviderやBox内へインストールするツール、ライブラリのバージョン管理が必要になってきます。
これらについて、VagrantではPlugin(以下プラグイン)を利用することで機能を追加したり、設定の負担を軽減することが出来ます。
Vagrantで利用できるプラグインはGitHubのVagrantのwikiに集約されています。
Available Vagrant Plugins · hashicorp/vagrant Wiki · GitHub
プラグインのインストール、アンインストール
プラグインのインストール、アンインストールは非常にシンプルです。
#インストール $ vagrant plugin install plugin-name #アンインストール $ vagrant plugin uninstall plugin-name
プラグインに関するコマンドは下記に集約されていますので参照してください。
vagrant plugin - Command-Line Interface - Vagrant by HashiCorp
プラグインの一部の紹介
vargrant-vbguestプラグイン(VirtualBox必須)
VirtualBoxを使用する場合、仮想マシンのOSにVirtualBox Guest Additionsというツールをインストールする必要があります。
この作業がインストールディスクのイメージをダウンロードして仮想マシンにインストールをするという手順であり、かなりの手間となります。
vagrant-vbguestプラグインはこの作業を肩代わりしてくれます。
その分初回のvagrant upに時間がかかるようになりますが、バージョンの管理やイメージのダウンロードを肩代わりしてくれるのは非常に便利です。
是非インストールしておきましょう。