Re: [Puppet Users] package conflict resolution method:

jcbollinger
Mon, 04 Nov 2013 15:14:02 -0000

On Friday, November 1, 2013 4:16:29 PM UTC-5, Tom Noonan
wrote:
>
> That looks like a good solution, thanks!
>
>

If by "good" you mean "quick and dirty" then you are right.
Relying on
ensure_packages() and especially ensure_resource() may get you in trouble,
however, and at minimum doing so carries an ongoing maintenance burden that
better alternatives avoid.  They are fundamentally the wrong solution,
because the simple fact that two independent, nonexclusive classes or
modules both rely on the same resource demonstrates that the resource
doesn''t properly belong to either one of them.  The correct solution,
therefore, is to factor out such resources into separate classes / modules.

The ensure_*() functions are encumbered by at least these issues:

   - they only solve the problem if they are applied to *every* declaration
   of the resources they guard
   - they destabilize the state of guarded resources(*) unless you are
   careful to keep all the guarded resource declarations identical
   - resource and class parameter overrides may fail to have the expected
   effect on resources that are guarded by ensure_*() functions

(*) The target resource state may change when you modify your manifest set,
but otherwise will be stable from run to run.


John

--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to puppet-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit