今回はVagrant上のCentOS6.4に対して実行してみました。
目的
- supermarket.getchef.comから取得できるapache2のレシピを使い、apacheのインストールを行う
- プロジェクト固有の設定を、apache2レシピに加筆することなく、独自のレシピを作成し、反映させる
Berksfile
source "https://api.berkshelf.com"
cookbook 'apache2'
apache2をインストールする
プロジェクト固有の設定を行うレシピを作成する
$ knife cookbook create my-httpdconf -o site-cookbook
テンプレートを編集する
apache2/templates/default/web_app.conf.erbをコピーし、作成したレシピのtemplates/default配下にペースト(名前はなんでもいいです。仮にmy-httpd.conf.erbとしておきます)
my-httpd.conf(短め)
LoadModule rewrite_module modules/mod_rewrite.so
DocumentRoot <%= "\'#{@params[:docroot]}\'" %>
SetEnv APPLICATION_ENV <%= @params[:env] %>
レシピを編集する
recipes/default.rb
include_recipe 'apache2'
web_app 'myproj' do
template 'my-httpd.conf.erb'
docroot '/service/htdocs'
env 'development'
end
テンプレートのシンボルに対応した値がアサインされる。
run_list
{"run_list":[
"recipe[my-httpdconf]",
"recipe[apache2::mod_rewrite]"
]}
mod_rewrite使うのでそれを指定。
実行結果
実行すると、/etc/httpd/conf/httpd.confにapache2レシピの標準設定 + 作成したconfをincludeする旨が追記され、自前のconfが/etc/httpd/sites-enabled/myproj.confという形で配置され、httpdサービスの起動まで行われる。楽ちん!