開発の下田です。
社内勉強会に参加しました。今回のテーマは仮想環境構築ツールの「Vagrant」です。
Vagrantはコマンド一発で仮想環境を構築したり、ある時点のスナップショットからパッケージにしたりといった、仮想環境の管理ができます。

20141226_150439

概要

仮想環境を作成できるパッケージを作成することがテーマです。
弊社のBtoB締め支払い決済「Paid」のWebサーバの仮想化イメージ(VMware vmdk)から、Vagrantのパッケージboxを作成します。

単にboxを作成するならvagrant packageコマンドを実行するだけですが、既にある環境からboxを作成するには、ノウハウが必要になります。
今回の勉強会では、ハンズオン形式で実際に構築しながら勉強しました。

手順

1.VirtualBox等の仮想環境マネージャーで仮想マシンを作成

2.vmdkイメージを仮想マシンに追加

3.仮想マシンを起動し、不要なサービスを停止

サービス一覧(chkconfig --list | grep :on)を目視確認し、postfixなどのメール、監視ツールなど、外部に影響があるサービスは確実に停止します。

4.NFSを使用している場合は、マウント解除

5.vagrantユーザの作成

vagrantではゲストOSにSSHで接続するコマンドが用意されています。このとき、ユーザ:vagrant、パスワード:vagrantで接続にいきます。
vagrantユーザを作成しておき、sudoersに追加しておくと便利です。

6.ネットワーク設定

7.Vagrantのパッケージ化


ポイント

1.ホストマシンのネットワークを切断する。

本番イメージを使用するときは、起動スクリプトやcronでメール配信など、外部へ影響が発生するおそれがあります。必ずネットワークから隔離した状態で構築しましょう。

2.元の環境のネットワークを再現する。

元の環境とできるだけ似たネットワーク構成を再現できると、環境の再現性が高くなります。うまくできるかどうかが、アプリケーションの動作などに影響するため重要なポイントです。
VirtualBoxを使用している場合はホストオンリーネットワークをセグメントごとに作成します。

まとめ

Vagrantのパッケージ化はコマンド一発で終わりなので、非常に簡単です。
不完全な状態でもVagrantのパッケージ化を行っておけば、Vagrantでパッケージ化した時点までロールバックできるので、トライアンドエラーが簡単にできました。
開発環境をパッケージ化してから、1日がかりだった環境構築が1時間程度(ほぼ待ち時間で実作業は一瞬)でできるようになりました。