はじめに
本連載では、インフラの構成をコードで管理するための便利なツールを使って、インフラを構築するための手順をご紹介します。前回は、コードによるインフラ構築の概要とローカルPCに仮想環境を作成するVagrantのセットアップについてご紹介しました。今回は具体的にVagrantを使って開発チーム内で統一した開発環境を構築する方法について説明します。
対象読者
本記事は、次の方を対象にしています。
- コードを使ってインフラの構成管理がしたい人
- ネットワークやLinuxの基礎知識がある人
- Webシステムの開発環境を構築したことがある人
Vagrantfileによる仮想環境構築
前回の連載で説明したVagrantfileとは、仮想環境を作成するもとになる設定ファイルです。ここでは、RubyによるVagrantfileの記述の仕方について説明します。
Vagrantfileのひな形作成
Vagrantには、Vagrantfileのひな形を作成する機能があります。次のvagrant initコマンドを実行するとカレントディレクトリにVagrantfileが自動生成されます。
E:\vagrant-sample>vagrant init
自動生成されたVagrantfileをもとに設定値を修正していきます。まず、Vagrantfileの基本となる構文は次のとおりです。
# Vagrantfileサンプル (Codezine) # 1. APIのバージョン指定 VAGRANTFILE_API_VERSION = "2" # 2. 仮想環境の設定 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| #ここに仮想環境の設定内容を記述する ~中略~ end
設定ファイルの説明をします。
1.APIのバージョン指定
VagrantfileのAPIのバージョンを指定します。設定できる値は1または2のいずれかです。Vagrant 1.1以上ではVAGRANTFILE_API_VERSION に"2"を設定してください。
2. 仮想環境の設定
Rubyではdoとendを1つのブロック(かたまり)として扱います。Vagrantで作成したい仮想環境の設定項目をこのブロックの中に記述していきます。設定出来る項目については大きく分けて次の4つがあります。
項目 | 説明 |
---|---|
仮想環境の基本設定 | どのBoxを使って仮想環境を作るか、ホスト名などの基本設定 |
ネットワーク設定 | 仮想環境のネットワーク構成を設定することで、ホストOSとゲストOS間で通信できる |
ファイル同期設定 | ホストOSとゲストOS間でフォルダを共有するための設定 |
プロビジョニング機能設定 | シェルスクリプトやChef、Puppetなどのインフラ構成管理ツールを使う機能の設定 |
なお、Rubyではコメント文は#で始まります。設定内容の説明などを記述しておくとよいでしょう。
仮想環境の基本設定/ネットワーク設定
今回のサンプルでは、まず、次のような構成の仮想環境を構築します。
では、仮想環境を構築するための基本設定とネットワーク設定について説明します。
# 3.仮想環境のもとになるBoxの情報 config.vm.box = "centos65" config.vm.box_url = "https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box" # 4.仮想環境のホスト名 config.vm.hostname = "vagranthost" ~中略~
プログラムの説明をします。
3. 仮想環境のもとになるBoxの情報
仮想環境を作成するもとになるBoxの名前を指定します。config.vm.box_url=でBoxの入手元のURLを指定しておくと、まだBoxが作成されていない時に自動的にBoxファイルを生成します。
4. 仮想環境のホスト名
仮想環境のホスト名を指定します。ホスト名にしたい任意の文字列を設定します。ここでは”vagranthost”という名前にしています。
次にゲストOSと通信を行うためのネットワーク設定を行います。
~中略~ # 5. ポートのフォワード設定 config.vm.network "forwarded_port", guest: 80, host: 8080 # 6. プライベートネットワークの設定 config.vm.network "private_network", ip: "192.168.33.10" # 7. パブリックネットワークの設定 config.vm.network "public_network" ~中略~
簡単にプログラムの説明をします。
5. ポートのフォワード設定
ホストOSとゲストOSのポートの転送を設定します。たとえば、ゲストOSの80番ポートをホストOSの8080に転送する場合、上記のように記述します。この設定を行うと、ホストOSでlocalhost:8080にアクセスすると、ゲストOSの80番ポート(http)にアクセスできます。
6. プライベートネットワークの設定
ゲストOSにプライベートネットワークを設定できます。この例の場合、ホストOSから192.168.33.10のプライベートアドレスでゲストOSにアクセスできます。
7. パブリックネットワークの設定
ゲストOSにパブリックネットワークを設定できます。プライベートネットワークの設定と同じようにStatic IPを指定できます。また、この例のようにIPを指定しなかったときは、ゲストOSにホストOSと同じネットワーク環境でDHCP用のIPアドレスが付与されます。
ネットワークの設定はこのほかにもさまざまな指定ができます。詳細については公式サイトのドキュメントを参照してください。