I recently upgraded the Puppet server from 2.7.6 to 3.4.3. Here are some notes:

1) Puppet 3.x require ruby version 1.8.7 or newer. RHEL5 repo only has ruby version up to 1.8.5.

2) The Puppet-3.X installer is not available in neither EPEL5 nor EPEL6, only available in EPEL7. You have to use Puppetlabs repo in RHEL5/6, which works well in my cases – upgrading from open source Puppet to Puppetlabs community version Puppet.

wget http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-11.noarch.rpm
rpm -ivh puppetlabs-release-6-11.noarch.rpm

3) The latest Puppet version is 3.7.x in the repo release 6.11. If you use Foreman, you need to check your Foreman compatibility. In my case, the highest version that my Foreman support is 3.4.X. So I need to explicitly tell yum to install this version.

yum install puppet-server-3.4.3

Puppet version Foreman installer Smart proxy Report/fact processors External node classifier
0.25.x Not supported Untested Untested Supported *
2.6.0 – 2.6.5 Not supported Untested Untested Supported *
2.6.5+ Not supported Supported Supported Supported
2.7.x Supported Supported Supported Supported
3.0.x Limited support 1.1 or higher Supported Supported
3.1.x – 3.4.x 1.1 or higher 1.1 or higher Supported Supported
3.5.0+ 1.4.3 or higher 1.4.2 or higher Supported Supported

4) If you use Puppetmaster with Apache/Passenger. You need to replace /usr/share/puppet/rack/puppetmasterd/config.ru with this one. You don’t need to do this if you use puppetmaster daemon.

5) The size of the database ( mysql in my case) is unchanged after the Puppet upgrade. And I also tested, Puppet 2.7.6 works well with the same database. So I assume there are no changes against the database.

6) The process of Puppet client is ‘/usr/bin/ruby /user/bin/puppet agent’ in 3.X. It was ‘/usr/bin/ruby /user/bin/puppetd agent’ in 2.x

7) To ensure the Puppet master is running when use Apache/Passenger. Check https://puppet_master_server:8140, then you should be able to see this message:

The environment must be purely alphanumeric, not ''