[chef] Resource groups


Chronological Thread 
  • From: Maxim Kulkin < >
  • To:
  • Subject: [chef] Resource groups
  • Date: Mon, 7 Nov 2011 21:58:11 +0400

Hi everybody,

I'm pretty new to Chef and would like assistance for the following problem.
I have a service and several configuration files for it. My other recipes 
communicate with that service, so it should be configured and ready to use 
before running them. I have following structure:

  service 'myservice' do
    action :nothing
  end

  template '/path/to/service/config1' do
    ...
    notifies :restart, resources(:service => 'myservice'), :immediate
  end

  template '/path/to/service/config2' do
    ...
    notifies :restart, resource(:service => 'myservice'), :immediate
  end

  service 'myservice' do
    action [:start, :enable]
  end

So, I want that if any of two configs change, the service is restarted not 
later than the second "service" resource. But in configuration that shown 
above, if both configs change, the service will be restarted two times.

How would you solve this "the Chef-way" ?

After reading through Chef sources I've developed following solution. I have 
a special resource -- "resource_group":

  service 'myservice' do
    action :nothing
  end

  resource_group 'myservice_configs' do
    template '/path/to/service/config1' do
      ...
    end

    template '/path/to/service/config2' do
      ...
    end

    notifies :restart, resource(:service => 'myservice'), :immediate
  end

  service 'myservice' do
    action [:start, :enable]
  end

So, when it is defined, it records all resources (through "method_missing" 
magic) that are created inside of it. The resource_group resource itself is 
created after resources in it (that's how Chef works). One resource_group's 
action triggers, it checks embedded resources'  #updated? method and if any 
resource was updated, it set's it's own #updated_by_last_action to true (thus 
triggering notifications).
What do you think about this solution? Maybe it could make it into Chef core?

Thanks,
Max


Archive powered by MHonArc 2.6.16.

§