当記事はケーススタディの連載となっています。目次は【こちら】です。
最新のソースコードは【GitHub】で公開中です。
#OSバージョン情報
- Windows 8
- CentOS 7
- VirtualBox 5.0.8
#今回の主目的
自分のローカル環境に開発用サーバを構成し、自由にサーバの設定変更/破棄できる環境を構築することです。
構築にはサーバを直接操作するのではなく開発用サーバを準備しAnsibleにて再現可能なインフラ設定コーディングを行います。
その上で、作成したAnsible実装コードを本番サーバに対して実行する事により開発サーバにて担保のとれた設定を本番にも適用します。これで開発サーバでは設定したが本番サーバでは設定していなかった等のよくあるミスをなくす事が可能になります。
また折角サーバ設定をプログラミングで行ったのでテストに関しても、ドキュメントによるサーバ設定の確認テストではなく、テスティングフレームワークを利用してデグレード(設定変更によるレベルダウン)の確認を行いたいと思います。
#使用するミドルウェア
主目的を達成する上で今回は「VirtualBox」、「Vagrant」、「Ansible」、「Serverspec」を使用します。
- 仮想環境ミドルウェア
- 開発環境構築時は簡単にサーバの初期構築/破棄/コピーを行う為、今回は仮想サーバ基盤としてVirtualBoxを使用します。 Vagrantのデフォルト仮想サーバ基盤であるからでもあります。
- プロビジョニングツール(サーバ設定実装ソフトウェア)
-
Ansibleを使用します。
Ansibleはサーバの設定をPythonとYUMLを使用して実装します。
実サーバ(今回の場合adminserv、apserv01、dbserv01)にエージェントをインストールする必要がない為、不要なミドルウェアを入れサーバを汚す心配がありません。(chefは場合によりエージェント(Ruby含)を導入する必要があります。)
これは厳密に管理された大規模開発では重要な要素になります。(不要/不明なミドルウェア/ソフトウェア/DIR/Fileはあってはならない) - 仮想環境構築ツール
-
Vagrantを使用します。
サーバ実装コーディングはプログラミングと違い、実行してしまうとサーバ自体に設定を加える為、サーバに設定した事をもどすことが容易ではありません。もし戻そうとするには戻すための実装コーディングが必要になります。
これはサーバ設定はプログラミングと違い、設定のコミット/ロールバックという機能がない為です。一部はAnsibleの機能を使いますが、それだけでは十分でありません。
そこでVagrant/VirtualBoxを使用し、サーバ自体のロールバック/コミットを実現します。実際はVirtualBoxのスナップショット機能を使用し、スナップショット前の状態に戻すという操作ですが、都度VirtaulBoxでスナップショットをとるのは手間なのでVagrantにて行います。また必要なサーバが増えた/不要になった場合はVagrantにて行います。 - サーバ設定テスティングフレームワーク
-
RubyのServerspecを使用します。
開発環境/本番環境は通常以下の点が異なります。
- 通常環境依存情報(例えばホスト名やIP)
- 同種(WEBサーバ/DBサーバ等の役割の違い)の役割をこなす台数
通常のプログラミングでも開発環境と本番環境では、仕組み(プログラム)は同一で環境依存と台数の違いは設定ファイルの変更を差し替える事に より対応する為、サーバ設定のテスティングも同様に「テストソースは一つ環境依存する設定は環境別に用意する。」で対応します。
次回は「Windows上のVirtualBoxにVagrantのベースとなる最小構成CentOS7を作成」について。
連載の目次は【こちら】です。