[chef] Duelling resources


Chronological Thread 
  • From: Matt Palmer < >
  • To:
  • Subject: [chef] Duelling resources
  • Date: Thu, 1 Sep 2011 10:59:17 +1000

How do people handle duelling resources, like the following trivial example:

    package "foo" do
        action :remove
    end

    package "foo" do
        action :install
    end

I would expect that to error out, or at least pick the last version
and run with it, but no, on every run I get:

    [Thu, 01 Sep 2011 10:37:46 +1000] INFO: Removing package[foo]
    [Thu, 01 Sep 2011 10:37:48 +1000] INFO: Installing package[foo]
version x.y.z

Swapping the resources swaps the log messages and the end state.

Now, I'm well aware that having two conflicting packages defined
side-by-side like this isn't likely in the real world, and even a
direct disagreement of "this package should/shouldn't be installed" is
similarly unlikely in a system.  I'll note that a similar result is
observed with template resources, which are *far* more likely to
suffer from this sort of disagreement.  It's *certainly* possible in
the real world (with manifests consisting of thousands of resources,
from cookbooks written by separate groups of people), that there will
be some amount of disagreement, and it'd be nice if Chef provided a
bit more protection.  What methods and practices are there to
minimise, or preferably detect and warn the user of this sort of
warfare?

- Matt



Archive powered by MHonArc 2.6.16.

§