Chefを今更ですが利用してみました
Railsのアプリケーションを構築する環境は、弊社ではWindows上に仮想環境を構築しCentOSをゲストOSとして利用することが多いです。
個人的には仮想環境を構築するが面倒ということもありOSXで学習していますが。
仕事でRailsのサーバを構築することになりそうなので、今更ですがChefを利用して環境構築にトライしてみたいと思います。
- クライアント:ContOS6.4(Windowsの仮想環境)
- サーバ:CentOS6.4
- データベース:PostgreSQL9.2
で試すことにしました。
クライアントは現在利用しているRailsの開発環境です。
そのため、クライアントにはRuby、bundleの利用できる環境が整っています。
kife-soloの導入
適当な作業用のディレクトリを作成し(今回単純にknife-soloとしてしまいました)、以下のようなGemfileを作成しました。
berksfileは、Rubyのgemを管理するbundlerのようなものでしょうか。Chefの公開されているコミュニティcookbookを管理をしてくれるツールになります。
次のコマンドを実行しインストールします。
$ bundle install
続いて、カレントディレクトリにリポジトリを作成します。
$ bundle exec knife solo init .
リモート側にChefをインストール
サーバ(リモート)にchef-soloをインストールするため、次のコマンドを実行します。
$ bundle exec knife solo prepare <hostname of IP Address>
pgdgリポジトリの追加
PosgreSQLをyumをつかってインストールすると、バージョン8.4となってしまいます。バージョン9.xをインストールするにはpgdgリポジトリを追加してからインストールしなければなりません。
pgdgリポジトリを追加するためのcookbookが公開されていますので、まずはpgdgリポジトリの追加をしてみます。
Berksfileを編集します。
また、nodeファイルのrun_listも編集します。
続いて次のコマンドを実行します。
$ bundle exec knife solo cook <hostname of IP Address>
また
$ ls -l /etc/yum.repos.d
でpgdgのリポジトリが追加されていることも確認できると思います。
PostgreSQLのインストール
今回は弊社でも長期に運用実績のあるバージョン9.2を導入してみます。
コミュニティのcookbookではエラーが発生してしまったので、最終的にはダウンロード後、cookbookを一部修正しました。
Berksfileに cookbook 'postgres'
を追加します。
その後、自作用のディレクトリsite-cookbook
ディレクトリにコピーしてフォルダ名をpostgres
からpostgres.opscode
に変更しました。
レシピの変更箇所は以下の箇所です。
バージョンの指定はnodeファイルでもできるのでしょうが、今回はとりあえず直接default.rbを変更してしまいました。
Berksfileを再度編集します。
nodeファイルのrun_listも編集します。
続いて次のコマンドを実行します。
$ bundle exec knife solo cook <hostname of IP Address>
今回は時間の関係で、data_bagは試していません。パスワードはnodeファイルに記載して対応しました。
あるべき形で確認できましたら、再度本投稿を更新したいと思います。
その他、pg_hba.confなども環境に合わせて修正が必要になると思いますが、すみません。現時点では割愛させていただきます。