Vagrantパッケージ作成勉強会
開発の下田です。
社内勉強会に参加しました。今回のテーマは仮想環境構築ツールの「Vagrant」です。
Vagrantはコマンド一発で仮想環境を構築したり、ある時点のスナップショットからパッケージにしたりといった、仮想環境の管理ができます。
概要
仮想環境を作成できるパッケージを作成することがテーマです。
弊社の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時間程度(ほぼ待ち時間で実作業は一瞬)でできるようになりました。