On 5/23/2011 3:12 PM, la Bigmac wrote:
Hello list,
Seems to be a few people recently wanting to discuss Gentoo as a server
:-) so thought I would pose a question that has been bugging me.
What would you guys recommend to manage multiple servers and the package
versions?
While I have a central emerge server (*rsync)* and sync all of my
servers to it I still manually update the packages.
Example, openssh how should I be updating openssh on all of my servers
other than logging onto each one in turn and running emerge openssh.
Should I cron schedule an /emerge/ --/update world /and control the
repository of packages or is there a more elegant solution?
I've become a huge Puppet nerd over the last year. I'm not managing
Gentoo on it, but it's supported and Puppet Labs does seem to fix Gentoo
bugs in a reasonable time.
First you'll need Ruby 1.8.7 as 1.9.2 support in Ruby isn't quite there
yet. I'd also run unstable for Puppet and Facter. You're better off
jumping in at 2.6.x than 0.25.x.
Puppet requires facter which is very cool in it's own right. It's local
discovery of the OS and those facts about your system can be used in
templates to make decisions. Here's an example for setting higher
thresholds on my large machines.
<% if processorcount.to_i >= 12 then -%>
and here's an example of a module to make sure sudo is the latest
version and add a config file for my local sudoers additions.
class sudo {
package { "sudo": ensure => latest, }
file { "/etc/sudoers.d/my_additions":
ensure => present,
owner => root, group => root, mode => 440,
require => Package["sudo"],
source => "puppet:///modules/sudo/my_additions",
}
}
In order to make this work you'd really need to have modules for each
package in your world file and set ensure => latest rather than just
present. However it does make it easy to keep configs, users, settings,
which packages in sync across machines.
That's Puppet in a very very tiny nutshell. They are some unique
challenges with using it well with Gentoo, but it would ultimately make
your system easier to reproduce.
kashani