How to (somewhat) easily build Puppet Enterprise RPMs for SLES (and RHEL).
If you want to use Puppet on the SuSE Linux Enterprise Server (SLES) distribution then you are basically heading for trouble. SLES really suffers for lacking a broad community software stack to supplement the distro itself. Like what Red Hat Enterprise Linux (RHEL) has in the form of the EPEL (https://fedoraproject.org/wiki/EPEL) repositories there is none of in the SLES world.
You have a few choices though:
(1) use the bundled Puppet packages which SuSE ships with SLES.
(2) use packages found on SuSE’s OpenBuild (http://openbuildservice.org/) service.
(3) compile the Puppet community stack with all dependencies yourself located in a custom directory tree.
(4) use the source RPMs provided by Puppetlabs
Option (1) will leave you with notoriously old versions of Puppet which will make a number of recent features unavailable to you.
Option (2) will give you a few decent Puppet stacks to choose from. Unfortunately all the ones I found had their binaries and libraries located inside the /usr directory tree. This will mean that they are bound to conflict with a number of SLES distro packages eventually.
Option (3) is probably the technically most reliable option which will let you run any recent version of Puppet. The downside is that you will need to compile the whole stack of Puppet dependencies such as Ruby, Augeas, Java and other libraries. This is because that you will find that many of the software dependencies in the distro of too old to be satisfy the requirement of any half-way recent Puppet version. So this option (3) will work but it will be a LOT of work. Especially if you need to maintain a Puppet stack for any combination of SLES 10, SLES 11 and SLES 12.
Option (4) can be used if you can live with the feature set brought along in Puppet Enterprise 3.1 (this is Puppet Community version 3.3.). After this version Puppetlabs stopped releasing the SRPM for thier Puppet Enterprise stack.
If however Puppet 3.3 is good enough for you then it will offer a number of advantages. In a heterogenous UNIX/Linux landscape you will be able to use the exact same Puppet stack for all servers. Pretend that you have a server landscape of SLES 10, SLES 11, RHEL 5 and RHEL 6. This option will let you build packages for all of these platforms with the exact same versions for Puppet and all its dependency libraries. This will ensure that if a Puppet manifest works on SLES then it will work on RHEL too, or vice-versa (as it should with a declarative config management tool). There are even sources for Solaris, Ubuntu Linux and other operating systems. See the complete list here:
To help you quickly build the RPMs you can use a few wrapper scripts I have made. They currently work for and have been tested on SLES 10, SLES 11, RHEL 5 and RHEL 6. I have published them on Github here:
I have had very nice results using this Puppet Enterprise stack for some time now. Though its a shame that Puppetlabs have stopped making their SRPMs publicly available.
If you have any problems using the scripts then let me know.