FANCOMI Ad-Tech Blog

株式会社ファンコミュニケーションズ nend・新規事業のエンジニア・技術ブログ

Vagrantをさわってみる

挨拶

お久しぶりです。

最近はランチ系の記事ばかり書いていたせいなのか 腹痛に悩まされているt_yamanakaです(というかおそらく食べ過ぎによるもの)。

毎回、ランチネタばかり書いていると 技術ブログの趣旨と変わってくるので今回はランチネタではありません。 あとたまにはvimじゃない記事も書いてみようかと思います。

今回の記事はVagrantというソフトウェアの紹介です。

Vagrantとは

Vagrantとはコマンドライン上から仮想マシンを 便利に作成できる仮想マシン自動作成ツールです。

サーバ構成などの設定をファイルに書き込むので、 ・間違った設定で動かなくなってしまったよ ・しかも、どこをいじったのかわからないよ ・…詰んだ。。 など困った状況に陥ったとしても、 設定を再利用することで再び同じ構成で再構築することができます。

つまり、 ・OSのイメージを用意 ・仮想マシンの設定をあれこれ ・あれをインストール、これをインストール など面倒な作業を一括自動化できる便利なツールです。

また、設定ファイルさえあれば 誰のもとでも同じ環境を再構築できるので、 新入社員の学習用環境などとしても使いやすいかもしれないですね。

ちなみに、 読み方はVagrant「ベイグラント」、「ベーグラント」 意味は「浮浪」、「さすらいの」、「方向のさだまらない」などなど。

読み方がロボットっぽくてかっこいいですね。

環境

今回使用した環境は以下のとおりです。

OS:MacOS X 10.8.4
仮想マシンVirtualBox 4.2.16
Vagrant:1.2.4

(今回、仮想マシンにはVirtualBoxを用いましたがVMWareAWSなども使えるようです)

インストール

VirtualBoxのインストール:ここ

Vagrantのインストール:ここ

自分のOS環境にあったものをダウンロードしてインストールして下さい。

Vagrantコマンド

[shell]$ vagrant -h[/shell] で確認できます。

こんな感じです。 [shell] -v, --version                    Print the version and exit. -h, --help                       Print this help.

Available subcommands: box         #Boxの取得 destroy     #仮想マシンの削除 halt        #仮想マシンのシャットダウン init        #Vagrantfileの作成 package     #Boxパッケージ化(自分用のBOX作成) plugin      #プラグインのインストール provision   #起動している仮想マシンへ対してchefのrecipeを実行する reload      #Vagrantfileの再読み込み resume      #復帰(suspendからの) ssh         #ssh接続 ssh-config  #ssh接続の設定 status      #仮想マシンの状況確認 suspend     #一時的な停止 up          #仮想マシンの起動 [/shell]

Boxの取得

Boxとは仮想マシンのひな形(テンプレート)です。

今回は公式サイトに用意されているBoxを使用してみます。 (公式TOPDOCUMENTATIONGetting StartedBoxes

[shell]$ vagrant box add precise32 http://files.vagrantup.com/precise32.box[/shell]

(precise32というのはUbuntu 12.04 32bit版のことです)

[shell] $ vagrant box list precise32 (virtualbox) [/shell]

・他のOSを使用したい場合 vagrantbox.esで探すといいみたいです。 有志がBoxを配布しているところ(非公式なので利用する際は自己責任で!)

仮想マシンの作成〜起動

仮想マシン作成から起動するまでの手順になります。 ・ディレクトリ作成 (仮想マシンごとにディレクトリを作っていく必要がある) [shell]$ mkdir precise32VM[/shell]

・初期化 [shell]$ vagrant init precise32[/shell] Vagrantfileが作成される(rubyで書かれた設定ファイル)

・起動 Vagrantfileがあるディレクトリで以下のコマンドを実行します。 [shell]$vagrant up[/shell]

VirtualBox側の画面に仮想マシンが表示され「実行中」になっています。 [caption id="attachment_1683" align="alignnone" width="770"]VirtualBox実行中画面 VirtualBox実行中画面[/caption]

仮想マシンへの接続

[shell]$ vagrant ssh[/shell] これでvagrantユーザでログインできます。

Apacheをインストールしてみます。 [shell]$ sudo aptitude -y install apache2[/shell]

この時点ではインストールが完了しても Mac側のブラウザで確認することはできません。

Vagrantfileの編集

仮想マシン上のWebページを表示するために ネットワークの設定を行います。 設定はVagrantfileを編集することで行います。

WebページをMac側から見れるようにするために プライベートアドレスを割り当てます。 Vagrantfile内以下の行のコメントアウトを外します。

[shell]# config.vm.network :private_network, ip: "192.168.33.10"[/shell]

設定ファイルを更新したのでreloadします。

[shell]$ vagrant reload[/shell]

ブラウザで先ほど割り当てたアドレスにアクセスすると Webページが表示されます。 [caption id="attachment_1681" align="alignnone" width="677"]Webブラウザ確認画面 Webブラウザ確認画面[/caption]

仮想マシンのシャットダウン

シャットダウンは以下のコマンドでおこないます。 [shell]$ vagrant halt[/shell]

VirtualBox側の画面でも「電源オフ」になっています。 [caption id="attachment_1677" align="alignnone" width="770"]VirtualBox 電源オフ画面 VirtualBox 電源オフ画面[/caption]

まとめ

Vagrant

・テンプレートとなるBox(ひな形)をベースにして、仮想マシンを作成する。 ・設定(Vagrantfile)を再利用することで同じ環境をコマンド実行だけで構築できる。

つまり、環境を

作成
↓
潰す
↓
簡単に元に戻せる

開発環境としては理想ですね。

今回は初歩的な部分を紹介しましたが、 ・各種設定 ・仮想マシン複数起動 ・仮想マシンのエクスポート ・アプリケーションのデプロイ ・プラグイン拡張 など まだまだ便利機能があるみたいなので、 引き続き、学習環境用に使い込みつつ 紹介していけたらなと思います。

それではではっ。