【仮想環境】Vagrantfileの内容を読み解いて、設定方法を理解してみる

サーバの画像 IT関連

VagrantとVirtualBoxを使って仮想環境を構築する方法は以下の記事から。

【イラストで分かる】VagrantとVirtualBoxを使って、仮想環境を構築してみよう!
VagrantとVirtualBoxを使って、簡単に仮想環境の構築をしてみましょう! インストールに時間がかかりますが、簡単です!

Vagrantfileを触る機会があったのですが、なんとなく取っつきにくいと感じました。

僕

いっそのこと全部日本語訳したら親しみやすいかな〜

ということで、今回は1つずつ日本語訳していきます!(思いつきでやっちゃう)

それでは、順番にVagrantfileを翻訳して読み解いていきましょう!

Vagrantfileのコンフィギュレーション

Vagrantの設定は以下のように全て行います。Vagrantの「2」です。
configureはコンフィギュレーションのバージョンを設定します(後方互換性のために古いスタイルもサポートしています)。
よほどのことがない限り変更しないようにしてください。

変更しないで下さいと言っているのは、この文章の下にある設定を指しているようですね。

Vagrant.configure("2") do |config|

最も一般的な設定オプションは、以下に文書化され、コメントされています。
完全なリファレンスについては、https://docs.vagrantup.com のオンラインドキュメントを参照してください。

ここまでは簡単な説明のようですね。
次からが設定値に関する説明のようです。

Vagrantboxに関する説明

すべてのVagrant開発環境には箱が必要です。
ボックスは https://vagrantcloud.com/search で検索できます。

私の環境ですと、以下のようになっています。

任意のbox名が指定できるようですね。

config.vm.box = "centos/7"

Vagrantboxの自動更新

ボックスの自動更新チェックを無効にする。
これを無効にすると、ユーザが vagrant box outdated を実行したときにのみボックスの更新がチェックされるようになります。
これは推奨されません。

推奨されていないので、「#」でコメントアウトされていますね。
更新されると困る、特別な場合にコメントを外して無効にすれば良いようです。

Vagrantでのフォワードポートマッピング設定

ホストマシン上のポートからマシン内の特定のポートへのアクセスを可能にするフォワードポートマッピングを作成します。
以下の例では、「localhost:8080」にアクセスすると、ゲストマシンのポート80にアクセスします。
注意: これにより、オープンされたポートへのパブリックアクセスが可能になります。

# config.vm.network "forwarded_port", guest: 80, host: 8080

言っていることそのままで、自分のパソコンから仮想環境にアクセスするのを可能にするため、ポートと呼ばれる繋ぎ口の設定をするものです。
ポート番号は変更も可能で、適当な値でも良いですが、基本的にはデファクトスタンダードの値を使います。

80番はHTTP、ページの閲覧時に使います。
443番はHTTPS、暗号化したページの閲覧時に使います。

(IPアドレスとポート番号を使って、実際のデータ通信は行っています)

ホストマシンからのアクセスを許可する(外部アクセスを許可しないようにする)

ホストマシン上のポートからマシン内の特定のポートへのアクセスを許可し、パブリックアクセスを無効にするために
127.0.0.1経由のアクセスのみを許可するフォワードポートマッピングを作成します。

自分のPCから仮想環境へアクセスする際、IPアドレスでの制限をかけるための設定のようです。

なぜIPアドレスの制限をかけるのかというと、不特定多数の誰もがアクセスできる状態にしてしまうと、セキュリティ上問題が起きる恐れがあります。
なので、自分のPC(通信元)からのIPアドレスだけに制限するためです。

(ちゃんと調べられてないので多分ですが)複数のIPアドレスの指定も可能です。

ホストマシンのみアクセスできるプライベートネットワークを作成

特定のIPを使用して、ホストのみがマシンにアクセスできるようにするプライベートネットワークを作成します。

言っている通りですが、自分のPCから仮想環境へアクセスする専用IPアドレスが設定できます。
これなら、パブリックアクセスも無いので安心です。

外部アクセスできるようにする設定

パブリックネットワークを作成します。
一般的にはブリッジドネットワークと一致します。
ブリッジネットワークを使用すると、マシンがネットワーク上の別の物理デバイスとして表示されます。

外部アクセスを許可するようにできる設定です。

実際には自分のPC上に仮想環境があるため、物理的には1台と認識されるはずですよね。
この設定をすることによって、ブリッジネットワークを挟み、外部から見たとき物理的に2台あると認識させることができます。

Public Networks - Networking | Vagrant by HashiCorp
Vagrant public networks are less private than private networks, and the exact meaning actually varies from provider to provider, hence the ambiguous definition....

ホストマシンと仮想環境で共有のフォルダを設定する

追加のフォルダをゲストVMに共有します。
最初の引数は、実際のフォルダへのホスト上のパスです。
第二引数は、ゲスト側でフォルダをマウントするためのパスです。
そして、オプションの第三引数は、必須ではないオプションのセットです。

仮想環境にプログラムを配置して実行する場合、一般的には以下のような手順になります。

  • プログラムを書く
  • ソースファイルを仮想環境に配置する

これだと面倒です。
そんな時、直接ソースファイルを修正したい!という思いに応えるのがこの設定です。

自分のPCのディレクトリと、仮想環境のディレクトリを設定することで、共有することができます。
そこにソースファイルを置けば、修正し保存した時点で仮想環境も反映されています!
便利!

仮想環境ソフトの基本設定(Provider-specific)

Vagrant用の様々なバッキングプロバイダを微調整できるように、プロバイダ固有の設定を行います。
これらはプロバイダ固有のオプションを公開しています。
VirtualBox用の例。

プロバイダとは、仮想環境を構築するソフトのことを指します。
VirtualBoxやVMWareなどのようなものです。

それらのプロバイダで行うような設定をVagrantfile上で設定できます。

利用可能なオプションの詳細については、使用しているプロバイダのドキュメントを参照してください。

このようにあるので、プロバイダ上で設定できる他のものも出来るようですね。

Vagrantで仮想環境を起動したとき実行したいシェルスクリプトの設定

シェルスクリプトによるプロビジョニングを有効にします。
Puppet、Chef、Ansible、Salt、Docker などの追加のプロビジョナーも利用できます。
それらの具体的な構文や使用方法については、ドキュメントを参照してください。

Vagrantを起動した時に実行したい処理があればここに設定します。
ファイルパスを書いて、シェルを実行することも可能です。
https://www.vagrantup.com/docs/provisioning/shell.html#external-script

詳細は、下記リンクの左のタブの入れ子から見ることができます。

Provisioning | Vagrant by HashiCorp
Provisioners in Vagrant allow you to automatically install software, alter configurations, and more on the machine as part of the `vagrant up` process.

まとめ

翻訳してみると、意外と簡単でしたね。

いくつか難しい用語が出てきましたが、調べていけばなんとなく分かりますね。

【イラストで分かる】VagrantとVirtualBoxを使って、仮想環境を構築してみよう!
VagrantとVirtualBoxを使って、簡単に仮想環境の構築をしてみましょう! インストールに時間がかかりますが、簡単です!

皆さんも、よいVagrantライフを!

タイトルとURLをコピーしました