[chef] Re: Check for changes in a data bag.


Chronological Thread 
  • From: Seth Falcon < >
  • To:
  • Subject: [chef] Re: Check for changes in a data bag.
  • Date: Thu, 08 Jul 2010 07:31:12 -0700

Hi John,

On 7/7/10 7:58 AM, John Hanks wrote:
> I have a recipe which looks in a data bag item to get a list of yum
> groups and individual rpms to install at a nodes first boot, like so:
> 

[snip]

> This works great, I get a yum run at a nodes first boot with all
> packages the node needs from the specified data bag. What I want now
> is to have each subsequent chef run look at the data bag and see if
> there have been any changes since the last run and if so, rerun yum to
> pick up those changes. Is there an easy way to do this using the data
> bag's revision number perhaps or do I need to somehow checksum the
> data bag contents and store the checksum? Should I just let yum run
> each time? Rerunning this tends to add a couple of minutes or more to
> the length of the chef-client run but is otherwise harmless.

A couple of thoughts...

1. There is a package resource that will use an appropriate package
provider based on the OS (yum is the default for Redhat and CentOS).  If
you haven't tried it, you might try using that instead of executing yum
directly.  One advantage is to make your recipes easier to port to other
Linux flavors.

2. A common pattern is to simply rerun and let the resources figure out
if work needs to be done (in this case package installs).  And the
package resource should do a reasonable job of only doing the
installation work if the requested package is not already installed.

Finally, you could modify your recipe to use some not_if checks to skip
the execution if the packages are already installed.  Along these lines,
you could include a version number or timestamp in your databag and
write it out on your nodes as part of the recipe.  Then you can check
whether the timestamp matches during a chef run.  I think you already
had that idea.  I'm not aware of easier ways...

+ seth





Archive powered by MHonArc 2.6.16.

§