Hello,

I encounter issues regarding puppet "self update" that I'm sure are
not uncommon:
1. When puppet version updates it doesn't restart to run the rest of
the manifest with the new version.
2. When a new provider is installed (or extra configuration is done to
enable an existing provider), puppet still won't make it available.

example for (1): Our vagrant (http://vagrantup.com/) dev base boxes
still come with Puppet 2.6.3 while the manifest depends on Puppet 2.7
features. I can manually upgrade puppet manually (and that's what I do
on dev), but when the time to deploy to production comes it
practically means that I have to manually upgrade Puppet to 2.7 on all
hosts before I push the change.

example for (2): We use daemontools (http://cr.yp.to/daemontools.html)
to monitor some of our servers. Puppet comes with a "daemontools"
Service type provider but since the daemontools package isn't
installed yet the provider is made unavailable for the rest of the
run. A second puppet run, assuming it managed to install daemontools
in the first one before it failed on other things, succeeds in picking
up the daemontools as a provider.

another example for (2): I use opsview (https://github.com/dpeters/
puppet-opsview) to monitor hosts. When the type is loaded by puppet it
looks for a file called /etc/puppet/opsview.conf to find URL/username/
password of the opsview REST server. This file doesn't exist (or can
be out of date) in the first run causing the Type to fail.

My suggestion -

Define a new "preload" stage - resources which can affect puppet's own
execution (e.g. types, config files, puppet version updates) can be
placed in that stage and eventually a specific function call (or a
special built-in trigger inside the Puppet code?) will cause Puppet to
drop everything at the end of this stage and start from fresh.

The mechanism has to be careful to limit potential inifinite loops -
e.g. if nothing was changed during the stage then don't re-run, or if
the stage keeps changing things and puppet re-starts more than a set
limit then fail.

What do you think about this? Is there another solution/work-around/
standard-best-practice I'm not aware of?

Thanks.

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to