I have always been on the fence with this issue.
There are certain things you are able to mange with puppet with the
use of "ensure => latest" (at least it has always worked for me)
Some people say, puppet is meant to maintain a stable build of your
system not update it.
And some people say, puppet is meant to deploy new configurations and
update packages where need be.
As you can see it is all what is in the end user's best interest.

There is such a thing as schedules,
http://reductivelabs.com/trac/puppet/wiki/TypeReference#id191
Off that page the most useful example would be:

schedule { daily:
    period => daily,
    range => [2, 4]
}

exec { "/usr/bin/apt-get update":
    schedule => daily
}

However, it seems that it doesn't exactly fit what you are looking
for.
Maybe use puppet to manage a cron job that stops puppet for the
duration of your time-frame?

As I see it, upgrading packages can be very dangerous, especially if
it is done "automagically".
Imagine you are using a redhat based distro, and you have your own yum
repo which is managed internally, it has two parts:
1, base pristine copy of the default install packages for whatever
your flavor is.
2, internal rpm repo, all of your "custom" built rpms for apache,
ruby, php, kernel etc.

Some of those "custom" rpms are fairly trivial but all of them can
potentially break your entire server/site.
It's really hard to say what is the best route for it, I can't answer
it myself, I just go with what fits for my team and my situation.
Most packages I have are handled by puppet, there are a few packages
that I will not ever let puppet manage, Kernel etc..

So, my next question is, would you really want to do a "yum upgrade"
on a system? (glibc would suck)
It seems like a lengthy process for something that could be done
simply by re-kickstarting and running puppet against a new distro
version.
(from kickstart to ready for code is 7.8minutes, something ridiculous
like 5 minutes for a Xen VM)

To get around a lot of the issues of upgrading packages, I came up
with an interesting solution, use puppet to manage a cron job.
The cron job will run on a nightly schedule and pretty much to a
"puppet --dry-run --no-background --tags rpm_install" on a config set
that is labeled "testing" in SVN, then I ship off the logs and see
what would happen if that testing branch were put into production.
Of course there is a little more to it, but when you have thousands of
servers with about 15 different build types, all you need to do is run
one test job on one of each build type.

For managing 6 systems, performing a maintenance by hand shouldn't be
hard, look into cap shell, or even cssh.
Hope that all makes some sense, that is a half-nut-shell of what my
standard practice is.

-Jason

--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to