serverspec (2)
以下から取得した wordpress の chef な recipe を serverspec な試験を書いてみるために確認中です。
ちなみに作業手順としては以下なエントリに列挙されているもので良いのかな。
上記 wordpress な recipe のリポジトリからは chef-solo なディレクトリを作成した後に chef-solo/cookbooks ディレクトリの中で clone をする模様。
で、昨晩は起点を apache2 な recipe にしてますね。あまり理由は無いです。
先頭から
まず、パケジを導入。
package "apache2" do package_name node['apache']['package'] end
ちょっとおおまかに流れを確認してみます。箇条書きで列挙。
default_modules
cookbooks/apache2/attributes/default.rb で以下な記述がありますね。
# Default modules to enable via include_recipe default['apache']['default_modules'] = %w{ status alias auth_basic authn_file authz_default authz_groupfile authz_host authz_user autoindex dir env mime negotiation setenvif }
むむ。こいつらが、という試験も、なのか。ちょっと掘ってみます。例えば cookbooks/apache2/recipes/mod_status.rb が以下。
# コメント略させて頂いてます
apache_module "status" do conf true end
ええと、cookbooks/apache2/definitions/apache_module.rb の先頭あたりが以下。
define :apache_module, :enable => true, :conf => false do include_recipe "apache2" params[:filename] = params[:filename] || "mod_#{params[:name]}.so" params[:module_path] = params[:module_path] || "#{node['apache']['libexecdir']}/#{params[:filename]}" if params[:conf] apache_conf params[:name] end
ええと、params[:name] は status って理解で良いのかな。params[:conf] は true なので apache_conf というソレが呼び出されるのかどうか。定義は cookbooks/apache2/definitions/apache_conf.rb になる模様。
手続き部分のみ引用させて頂きます。
define :apache_conf do template "#{node['apache']['dir']}/mods-available/#{params[:name]}.conf" do source "mods/#{params[:name]}.conf.erb" notifies :restart, "service[apache2]" mode 0644 end end
そうか、params[:conf] が true なら設定ファイルがあるのでよしなに、という事なんですね。つうことは mod_status.rb の場合は少なくとも設定ファイルの存在チェックな試験が必要、ということになるのか。で、上で一気に導入されているソレ達は enable にはされていないのでとりあえず設定ファイルが投入されるもののみ確認すれば良い、という事になるのかな。
とりあえず
別途で apache2 単体であればどんな試験を書くべきなのか、を検討してみて動作確認もしてみたいと思ってます。