> - distributing an RPM to a series of clients (namely RabbitMQ) and
> installing the package? I realize that I can do it naively by pulling
> the file from the puppetmaster and then using the package resource to
> install it via RPM, but I was wondering if there was a better way to
> do this.
Make a regular http- or ftp-accessible repository (instead of using the
puppetmaster's file distribution facility), and use one of the
higher-level rpm-based package providers with the puppet package type
(yum, aptrpm, etc.). You might also be able to do this just with rpm and
a repository (I'm Redhat-illiterate). But the important thing would be
to ensure you can check if a package is already installed before you
attempt another rpm installation. Even if you had to fall back to an
exec { "install-rabbit":
command => "rpm -Uvh http://path/to/rabbit.rpm"
}
you could make that idempotent with an unless parameter:
exec { "install-rabbit":
command => "rpm -Uvh http://path/to/rabbit.rpm",
unless => "rpm -qsomethingsomething rabbit | grep -q installed"
}
> - distributing and compiling a tarball? Its a pretty standard
> autoconf/automake tarball (i.e. './configure --prefix=/usr; make; make
> install') ... is there a "standard" way to do this with puppet. I'm
> also using a source-built Ruby and RubyGems, which would be nice to
> manage with puppet.
I use GNU stow and a stowedpackage definition:
http://blogs.cae.tntech.edu/mwr/2008/02/01/the-autostow-is-dead-long-live-stowedpackage/
-- this wouldn't exactly work for things you insist on building per
node, but could be modified. It'd be very similar to what Jeremy pointed
to in the other reply.
--
Mike Renfro / R&D Engineer, Center for Manufacturing Research,
931 372-3601 / Tennessee Technological University
> Make a regular http- or ftp-accessible repository (instead of using the
> puppetmaster's file distribution facility), and use one of the
> higher-level rpm-based package providers with the puppet package type
> (yum, aptrpm, etc.). You might also be able to do this just with rpm and
> a repository (I'm Redhat-illiterate). But the important thing would be
> to ensure you can check if a package is already installed before you
> attempt another rpm installation. Even if you had to fall back to an
>
> exec { "install-rabbit":
> command => "rpm -Uvh http://path/to/rabbit.rpm"
> }
>
> you could make that idempotent with an unless parameter:
>
> exec { "install-rabbit":
> command => "rpm -Uvh http://path/to/rabbit.rpm",
> unless => "rpm -qsomethingsomething rabbit | grep -q installed"
> }
package{'rabbit':
ensure => present,
source => "http://path/to/rabbit.rpm",
privater => rpm,
}
works as well.
However managing your own yum repository is easy and imho the best way
to go.
cheers pete
> Sourcing to a HTTP address works? Since when?
always.
package is not file.
cheers pete