puppet is a steady-state management system, where you specify the target
and puppet works out how to get there. Installing and removing packages
in a single step doesn't fit into that model at all.
If there is no possibility at all to pre-compile packages from the PSP
(e.g. by re-using an imaging server or stow or something similar) then I
would a) hate the vendor and b) create a single script doing an
unattended PSP install which is called by puppet when needed.
If you really want to force this into puppet proper, you need a list of
all packages needed by the installation, and -- for each server -- a
list of packages out of this set that should be always installed. Call
the first list $necessary and the latter $always. The list of unneeded
packages, $removables, is obviously $necessary - $always. Adjust for the
PSP's dependencies as necessary.
Now you can do something like this:
# execute a script that does a "yum install $necessary"
# and then installs the psp
exec { "/usr/local/bin/psp_install": }
package {
$removeables:
ensure => purged,
require => Exec["/usr/local/bin/psp_install"]
}
Regards, DavidS
I can imagine that the latter might be a problem, but in the end you
really want to control all significant packages by puppet, which makes
this problem go away. Mostly. At least you should get fine grained error
messages, when two parts of the config want to do different things to
the smae package ;-)
Regards, DavidS
PS: slightly OT: is there _any_ hardware/systems vendor who actually
does "get" Linux/open source instead of trying to force spiked kludges
onto customers?
Our approach was a little different.
We have a standard distribution that goes on all machines.
Puppet knows which packages to lay down, the order to do it in, and
how to tell what network driver to load (tg3 for the G4s, bnx2 for the
G5s). It also deals with the modifications to the sudoers file, snmp
configuration etc.
Doesn't work when you're trying to do multiple OS though, at least not
without a pile of work.
We also don't have the situation where the support pack is already installed.