Chef CookbookをServerspecテスト駆動で作成(Elasticsearchインストール)

serverspec の使い方を大体覚えたので、練習を兼ねて elasticsearch をインストールする Chef Cookbook をテスト駆動スタイルで作成してみました。基本的に以下ページの作業をなぞる手順となります。

CentOS6にElasticsearchをインストールしMySQLからデータをインポート | EasyRamble

serverspec については、以下の Resource Types のページが大変役に立ちます。

Serverspec – Resource Types

スポンサーリンク

このエントリーは、CentOS サーバー設定用 Chef Cookbook/Recipe の目次 の一部です。

elasticsearch 用の serverspec テストコード

以下の内容をチェックするテストコードです。6以降は、MySQL から Elasticsearch のインデックスにデータをインポートするための内容となります。

1. java-1.7.0-openjdk-devel がインストールされていること
2. elasticsearch インストール用のリポジトリ設定
3. elasticsearch がインストールされていること
4. elasticsearch が自動起動のサービスに追加されていて、起動中であること
5. elasticsearch のプラグインである kuromoji がインストールされていること
6. mysql-connector-java がインストールされていること
7. CLASSPATH に /usr/share/java/mysql-connector-java.jar を追加
8. elasticsearch のプラグインである elasticsearch-river-jdbc がインストールされていること

spec/centos.vagrant/app_elasticsearch_spec.rb

テストを実行。

予定通り、テストが全部失敗してます。

elasticsearch インストール用の Chef Cookbook を作成

続いて、上述のテストを成功させるための elasticsearch インストール用の Chef Cookbook を作成していきます。

Recipe 作成。

site-cookbooks/app_elasticsearch_cookbook/recipes/default.rb

メインの Recipe は以上です。以降は、Recipe 中で利用しているファイル。

elasticsearch インストール用のリポジトリ設定ファイル。

site-cookbooks/app_elasticsearch_cookbook/files/elasticsearch.repo

続いて、mysql-connector-java.jar のパスを CLASSPATH に追加するためのファイル。

site-cookbooks/app_elasticsearch_cookbook/files/mysql-connector-java.sh

以上で Cookbook の作成は終了です。プロビジョニング実行。

プロビジョニング実行後にテストが通ることを確認

プロビジョニング実行後に、もう一回テスト。

おおお!全部テストが通りました!これは快感。

以下、手動での確認。serverspec のテストに書いてある内容を手動で行っています。

当たり前ですが、テストに書いたとおりにインストールと設定が行えています。

今回は、以下のようなテスト駆動(TDD/BDD)の流れでサーバー構成を行いました。

1. serverspec でサーバーのテスト(仕様)を書く
2. テストが失敗するのを確認
3. Chef で Cookbook を作成してプロビジョニング
4. テストが通ることを確認

同じ作業を繰り返すのが楽になるとともに、信頼性を高められるので安心感が大きいです!

スポンサーリンク
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!