Thought I'd just post some manifest code for what people have already described to give you some ideas.
The following is a parameterised class where you can either use the site default, or pass in any version of Puppet you want: class puppet($request_version = "") { #everything needs common! include common ###################################################################### # # !!! VERY IMPORTANT VARIABLE !!! # #The exact version (including release number) of the Puppet package #to install. Updating this will upgrade Puppet SITE WIDE! # #If you want to upgrade one node, pass the class include the #'request_version' variable like so: # node foo { class {fh_puppet: request_version => "9.8.7" } } if $request_version == "" { $puppet_version = "2.6.2-1" } else { $puppet_version = $request_version } ###################################################################### #We build the Puppet RPMs ourselves so we need our internal repository realize Managed_yumrepo[internal] package{"puppet": ensure => $puppet_version, } #The puppetd service, restart when the package changes so we're not running #old versions of the daemon. service { "puppet": enable => true, ensure => running, hasstatus => true, hasrestart => true, subscribe => Package["puppet"], } ... } I use Ruby Enterprise for Puppet Masters, so have created my own define to install/upgrade Gems in the Ruby Enterprise environment: #use the Ruby Enterprise Gem installer for a given Gem name define entgempackage($version = "") { $gemcmd = "/opt/ruby-enterprise/bin/gem" #If no version is specified, attempt to install any version of the named gem. #This will not upgrade Gems. if $version == "" { $cmd = "$gemcmd install $name" exec { "$cmd": unless => "/usr/bin/test `$gemcmd list $name | grep $name | wc - l` -eq 1", logoutput => "on_failure", } } #otherwise, install the supplied version. If the gem is already installed, #the gem will be updated instead of installed along side the current version. else { $cmd = "/bin/bash -c 'if [[ `$gemcmd list $name | grep $name | wc - l` -eq 1 ]]; then if [[ `$gemcmd list $name | grep $version | wc -l` - eq 0 ]]; then $gemcmd update $name -v $puppet; fi; else $gemcmd install $name -v $version; fi'" exec { "$cmd": unless => "/usr/bin/test `$gemcmd list $name | grep $version | wc -l` -gt 0", logoutput => "on_failure", } } } And then a class for the Puppet Master: class puppet::master inherits puppet { include common include httpd::ssl include subversion include ruby_enterprise::passenger #The puppet version variable can't come from the parent class as the RPM version #contains a release number and this is not handled by Gem (they don't have #release numbers). $puppet_gem_version = "2.6.2" entgempackage { "puppet": version => $puppet_gem_version, require => Entgempackage["passenger"], notify => Service["httpd"], } ... } On Oct 8, 9:15 pm, Forrie <for...@gmail.com> wrote: > I'm just beginning with Puppet. One issue I've run into is updates. > As my nodes expand, updating each individual node via my manual method > becomes daunting. > > Could someone share their recipe or procedure for using the puppet > master to distribute updates of puppet to the client nodes? I would > guess using a "gem" would be easier. Updating puppet on the master > node isn't much of a problem via source, though perhaps I should > consider the "gem" there as well? > > 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-us...@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.