VagrantとVirtualBoxを使って仮想環境を構築する方法は以下の記事から。
Vagrantfileを触る機会があったのですが、なんとなく取っつきにくいと感じました。
いっそのこと全部日本語訳したら親しみやすいかな〜
ということで、今回は1つずつ日本語訳していきます!(思いつきでやっちゃう)
それでは、順番にVagrantfileを翻訳して読み解いていきましょう!
Vagrantfileのコンフィギュレーション
1 2 3 4 |
# All Vagrant configuration is done below. The "2" in Vagrant.configure # configures the configuration version (we support older styles for # backwards compatibility). Please don't change it unless you know what # you're doing. |
Vagrantの設定は以下のように全て行います。Vagrantの「2」です。
configureはコンフィギュレーションのバージョンを設定します(後方互換性のために古いスタイルもサポートしています)。
よほどのことがない限り変更しないようにしてください。
変更しないで下さいと言っているのは、この文章の下にある設定を指しているようですね。
Vagrant.configure("2") do |config|
1 2 3 |
# The most common configuration options are documented and commented below. # For a complete reference, please see the online documentation at # https://docs.vagrantup.com. |
最も一般的な設定オプションは、以下に文書化され、コメントされています。
完全なリファレンスについては、https://docs.vagrantup.com のオンラインドキュメントを参照してください。
ここまでは簡単な説明のようですね。
次からが設定値に関する説明のようです。
Vagrantboxに関する説明
1 2 |
# Every Vagrant development environment requires a box. You can search for # boxes at https://vagrantcloud.com/search. |
すべてのVagrant開発環境には箱が必要です。
ボックスは https://vagrantcloud.com/search で検索できます。
私の環境ですと、以下のようになっています。
任意のbox名が指定できるようですね。
config.vm.box = "centos/7"
Vagrantboxの自動更新
1 2 3 |
# Disable automatic box update checking. If you disable this, then # boxes will only be checked for updates when the user runs # `vagrant box outdated`. This is not recommended. |
ボックスの自動更新チェックを無効にする。
これを無効にすると、ユーザがvagrant box outdated
を実行したときにのみボックスの更新がチェックされるようになります。
これは推奨されません。
推奨されていないので、「#」でコメントアウトされていますね。
更新されると困る、特別な場合にコメントを外して無効にすれば良いようです。
Vagrantでのフォワードポートマッピング設定
1 2 3 4 |
# Create a forwarded port mapping which allows access to a specific port # within the machine from a port on the host machine. In the example below, # accessing "localhost:8080" will access port 80 on the guest machine. # NOTE: This will enable public access to the opened port |
ホストマシン上のポートからマシン内の特定のポートへのアクセスを可能にするフォワードポートマッピングを作成します。
以下の例では、「localhost:8080」にアクセスすると、ゲストマシンのポート80にアクセスします。
注意: これにより、オープンされたポートへのパブリックアクセスが可能になります。
# config.vm.network "forwarded_port", guest: 80, host: 8080
言っていることそのままで、自分のパソコンから仮想環境にアクセスするのを可能にするため、ポートと呼ばれる繋ぎ口の設定をするものです。
ポート番号は変更も可能で、適当な値でも良いですが、基本的にはデファクトスタンダードの値を使います。
80番はHTTP、ページの閲覧時に使います。
443番はHTTPS、暗号化したページの閲覧時に使います。
(IPアドレスとポート番号を使って、実際のデータ通信は行っています)
ホストマシンからのアクセスを許可する(外部アクセスを許可しないようにする)
1 2 3 4 |
# Create a forwarded port mapping which allows access to a specific port # within the machine from a port on the host machine and only allow access # via 127.0.0.1 to disable public access # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" |
ホストマシン上のポートからマシン内の特定のポートへのアクセスを許可し、パブリックアクセスを無効にするために
127.0.0.1経由のアクセスのみを許可するフォワードポートマッピングを作成します。
自分のPCから仮想環境へアクセスする際、IPアドレスでの制限をかけるための設定のようです。
なぜIPアドレスの制限をかけるのかというと、不特定多数の誰もがアクセスできる状態にしてしまうと、セキュリティ上問題が起きる恐れがあります。
なので、自分のPC(通信元)からのIPアドレスだけに制限するためです。
(ちゃんと調べられてないので多分ですが)複数のIPアドレスの指定も可能です。
ホストマシンのみアクセスできるプライベートネットワークを作成
1 2 |
# Create a private network, which allows host-only access to the machine # using a specific IP. |
特定のIPを使用して、ホストのみがマシンにアクセスできるようにするプライベートネットワークを作成します。
言っている通りですが、自分のPCから仮想環境へアクセスする専用IPアドレスが設定できます。
これなら、パブリックアクセスも無いので安心です。
外部アクセスできるようにする設定
1 2 3 |
# Create a public network, which generally matched to bridged network. # Bridged networks make the machine appear as another physical device on # your network. |
パブリックネットワークを作成します。
一般的にはブリッジドネットワークと一致します。
ブリッジネットワークを使用すると、マシンがネットワーク上の別の物理デバイスとして表示されます。
外部アクセスを許可するようにできる設定です。
実際には自分のPC上に仮想環境があるため、物理的には1台と認識されるはずですよね。
この設定をすることによって、ブリッジネットワークを挟み、外部から見たとき物理的に2台あると認識させることができます。
ホストマシンと仮想環境で共有のフォルダを設定する
1 2 3 4 |
# Share an additional folder to the guest VM. The first argument is # the path on the host to the actual folder. The second argument is # the path on the guest to mount the folder. And the optional third # argument is a set of non-required options. |
追加のフォルダをゲストVMに共有します。
最初の引数は、実際のフォルダへのホスト上のパスです。
第二引数は、ゲスト側でフォルダをマウントするためのパスです。
そして、オプションの第三引数は、必須ではないオプションのセットです。
仮想環境にプログラムを配置して実行する場合、一般的には以下のような手順になります。
- プログラムを書く
- ソースファイルを仮想環境に配置する
これだと面倒です。
そんな時、直接ソースファイルを修正したい!という思いに応えるのがこの設定です。
自分のPCのディレクトリと、仮想環境のディレクトリを設定することで、共有することができます。
そこにソースファイルを置けば、修正し保存した時点で仮想環境も反映されています!
便利!
仮想環境ソフトの基本設定(Provider-specific)
1 2 3 |
# Provider-specific configuration so you can fine-tune various # backing providers for Vagrant. These expose provider-specific options. # Example for VirtualBox: |
Vagrant用の様々なバッキングプロバイダを微調整できるように、プロバイダ固有の設定を行います。
これらはプロバイダ固有のオプションを公開しています。
VirtualBox用の例。
プロバイダとは、仮想環境を構築するソフトのことを指します。
VirtualBoxやVMWareなどのようなものです。
それらのプロバイダで行うような設定をVagrantfile上で設定できます。
1 2 |
# View the documentation for the provider you are using for more # information on available options. |
利用可能なオプションの詳細については、使用しているプロバイダのドキュメントを参照してください。
このようにあるので、プロバイダ上で設定できる他のものも出来るようですね。
Vagrantで仮想環境を起動したとき実行したいシェルスクリプトの設定
1 2 3 |
# Enable provisioning with a shell script. Additional provisioners such as # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the # documentation for more information about their specific syntax and use. |
シェルスクリプトによるプロビジョニングを有効にします。
Puppet、Chef、Ansible、Salt、Docker などの追加のプロビジョナーも利用できます。
それらの具体的な構文や使用方法については、ドキュメントを参照してください。
Vagrantを起動した時に実行したい処理があればここに設定します。
ファイルパスを書いて、シェルを実行することも可能です。
https://www.vagrantup.com/docs/provisioning/shell.html#external-script
詳細は、下記リンクの左のタブの入れ子から見ることができます。
まとめ
翻訳してみると、意外と簡単でしたね。
いくつか難しい用語が出てきましたが、調べていけばなんとなく分かりますね。
皆さんも、よいVagrantライフを!