[chef] Re: Re: Re: Re: Re: Re: Re: Re: Is this a bug in the apache2 cookbook?


Chronological Thread 
  • From: Tim Uckun < >
  • To:
  • Subject: [chef] Re: Re: Re: Re: Re: Re: Re: Re: Is this a bug in the apache2 cookbook?
  • Date: Tue, 10 Jan 2012 21:46:59 +1300

> Of course, the apache2 cookbook could just always create the .load file
> regardless of distribution.  However, for all cases except passenger it
> would be redundant and might introduce other issues.
>
> In any case, if you believe you've found a bug in an Opscode cookbook, you
> should report it.

I have filed a bug http://tickets.opscode.com/browse/COOK-967

I have filed the bug against the passenger cookbook but I still think
the behaviour of the apache2 recipe should be changed. In my opinion
the apache_module call is an imperative and the end result should be a
.load file. Of course the call should be idempotent so it would not
trigger a reload if is already correct.

One other thing I noticed is that the following sequence of calls will
cause unexpected behavior.


apache_module "passenger" do
 module_path 
"/usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so"
end

...later on....

apache_module "passenger" do
   enable true (or false)
end

Causes the run to crash. It crashes because the second call overwrote
the .load file to read  "LoadModule passenger_module
mod_pasenger.so\n".  Unless you specify the load path every time the
call is made it gets reset to the default. In this case the default
.so file does not exist and apache exits with an error.

IMHO this behaviour is unexpected and the implementation should be
done differently. One possible approach might be to use an action so
you could have action :create action :enable action :disable.

Anyway the bug has been filed. I have gotten around the problem by
rewriting the passenger_apache2 recipe to read like this.

template "#{node[:apache][:dir]}/mods-available/passenger.conf" do
  cookbook "passenger_apache2"
  source "passenger.conf.erb"
  owner "root"
  group "root"
  mode "644"
end

file "#{node[:apache][:dir]}/mods-available/passenger.load" do
  cookbook "passenger_apache2"
   content "LoadModule passenger_module #{node[:passenger][:module_path]}\n"
  owner "root"
  group "root"
   mode 0644
end

apache_module "passenger" do
  module_path node[:passenger][:module_path]
  enable true
end

All three stanzas are needed in order to enable the module.



Archive powered by MHonArc 2.6.16.

§