
Puppet Server is a next-generation alternative to our current puppet master, which builds on the successful Clojure technology stack underlying products like PuppetDB. Puppet Server is an application that runs on the Java Virtual Machine (JVM) and provides the same services as the classic Puppet master application. It mostly does this by running the existing Puppet master code in several JRuby interpreters, but it replaces some parts of the classic application with new services written in Clojure.
Puppet Server is one of two recommended ways to run the Puppet master service; the other is a Rack server. Today they’re mostly equivalent — Puppet Server is easier to set up and performs better under heavy loads, but they provide the same services. In the future, Puppet Server’s features will further surpass the Rack Puppet master.
System Requirements
Puppet Server is configured to use 2GB of RAM by default. Just to play around with an installation on a Virtual Machine. However, ram can be reduced to minimum of 512MB in test enviornment. Make sure you have good amount of ram when using puppet server in production though to guarantee optimal performance.
Puppet Server: Installing
Enable the puppetlabs package repository i.e. for centos and debian based systems. Check the operating system version and download the compatiable repository package.
[root@puppetserver ~]# wget http://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm
--2015-03-01 20:12:25-- http://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm
Resolving yum.puppetlabs.com (yum.puppetlabs.com)... 198.58.114.168, 2600:3c00::f03c:91ff:fe69:6bf0
Connecting to yum.puppetlabs.com (yum.puppetlabs.com)|198.58.114.168|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10160 (9.9K) [application/x-redhat-package-manager]
Saving to: ‘puppetlabs-release-el-7.noarch.rpm’
100%[===================================================================================================================>] 10,160 --.-K/s in 0s
2015-03-01 20:12:32 (61.8 MB/s) - ‘puppetlabs-release-el-7.noarch.rpm’ saved [10160/10160]
[root@puppetserver ~]# rpm -ivh puppetlabs-release-el-7.noarch.rpm
warning: puppetlabs-release-el-7.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID 4bd6ec30: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:puppetlabs-release-7-11 ################################# [100%]
[root@puppetserver ~]#
In case you're setting up Puppet Server on the same server you were running the classic puppet master, make sure to stop the apache and puppet master services on the existing system before starting puppet server.
Install
Install the Puppet Server using the below command. This command will install puppetserver (don't confuse with puppet-server) along with all it's dependancies. The dependancy packages are listed below as well. This gives an idea of the dependancies.
yum install puppetserver
[root@puppetserver ~]# yum install puppetserver
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.excellmedia.net
* extras: centos.excellmedia.net
* updates: centos.excellmedia.net
Resolving Dependencies
--> Running transaction check
---> Package puppetserver.noarch 0:1.0.2-1.el7 will be installed
--> Processing Dependency: puppet < 4.0.0 for package: puppetserver-1.0.2-1.el7.noarch
--> Processing Dependency: puppet >= 3.7.3 for package: puppetserver-1.0.2-1.el7.noarch
--> Processing Dependency: java-1.7.0-openjdk for package: puppetserver-1.0.2-1.el7.noarch
--> Running transaction check
---> Package java-1.7.0-openjdk.x86_64 1:1.7.0.75-2.5.4.2.el7_0 will be installed
--> Processing Dependency: java-1.7.0-openjdk-headless = 1:1.7.0.75-2.5.4.2.el7_0 for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: xorg-x11-fonts-Type1 for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libpulse.so.0(PULSE_0)(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libpng15.so.15(PNG15_0)(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libjvm.so(SUNWprivate_1.1)(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libjpeg.so.62(LIBJPEG_6.2)(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libjava.so(SUNWprivate_1.1)(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: fontconfig for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libpulse.so.0()(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libpng15.so.15()(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libjvm.so()(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libjpeg.so.62()(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libjava.so()(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libgif.so.4()(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libfontconfig.so.1()(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libcups.so.2()(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libawt.so()(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libXtst.so.6()(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libXrender.so.1()(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libXi.so.6()(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libXext.so.6()(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libX11.so.6()(64bit) for package: 1:java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
---> Package puppet.noarch 0:3.7.4-1.el7 will be installed
--> Processing Dependency: ruby >= 1.8.7 for package: puppet-3.7.4-1.el7.noarch
--> Processing Dependency: facter >= 1:1.7.0 for package: puppet-3.7.4-1.el7.noarch
--> Processing Dependency: hiera >= 1.0.0 for package: puppet-3.7.4-1.el7.noarch
--> Processing Dependency: ruby >= 1.8 for package: puppet-3.7.4-1.el7.noarch
--> Processing Dependency: ruby-shadow for package: puppet-3.7.4-1.el7.noarch
--> Processing Dependency: /usr/bin/ruby for package: puppet-3.7.4-1.el7.noarch
--> Processing Dependency: ruby(selinux) for package: puppet-3.7.4-1.el7.noarch
--> Processing Dependency: ruby-augeas for package: puppet-3.7.4-1.el7.noarch
--> Processing Dependency: rubygem-json for package: puppet-3.7.4-1.el7.noarch
--> Running transaction check
---> Package cups-libs.x86_64 1:1.6.3-14.el7 will be installed
---> Package facter.x86_64 1:2.4.1-1.el7 will be installed
--> Processing Dependency: pciutils for package: 1:facter-2.4.1-1.el7.x86_64
---> Package fontconfig.x86_64 0:2.10.95-7.el7 will be installed
--> Processing Dependency: fontpackages-filesystem for package: fontconfig-2.10.95-7.el7.x86_64
---> Package giflib.x86_64 0:4.1.6-9.el7 will be installed
--> Processing Dependency: libSM.so.6()(64bit) for package: giflib-4.1.6-9.el7.x86_64
--> Processing Dependency: libICE.so.6()(64bit) for package: giflib-4.1.6-9.el7.x86_64
---> Package hiera.noarch 0:1.3.4-1.el7 will be installed
---> Package java-1.7.0-openjdk-headless.x86_64 1:1.7.0.75-2.5.4.2.el7_0 will be installed
--> Processing Dependency: lcms2 >= 2.5 for package: 1:java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: jpackage-utils >= 1.7.3-1jpp.2 for package: 1:java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: tzdata-java for package: 1:java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libpangoft2-1.0.so.0()(64bit) for package: 1:java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libpangocairo-1.0.so.0()(64bit) for package: 1:java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libpango-1.0.so.0()(64bit) for package: 1:java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: liblcms2.so.2()(64bit) for package: 1:java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libgtk-x11-2.0.so.0()(64bit) for package: 1:java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libgdk_pixbuf-2.0.so.0()(64bit) for package: 1:java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libgdk-x11-2.0.so.0()(64bit) for package: 1:java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libcairo.so.2()(64bit) for package: 1:java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64
--> Processing Dependency: libatk-1.0.so.0()(64bit) for package: 1:java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64
---> Package libX11.x86_64 0:1.6.0-2.1.el7 will be installed
--> Processing Dependency: libX11-common = 1.6.0-2.1.el7 for package: libX11-1.6.0-2.1.el7.x86_64
--> Processing Dependency: libxcb.so.1()(64bit) for package: libX11-1.6.0-2.1.el7.x86_64
---> Package libXext.x86_64 0:1.3.2-2.1.el7 will be installed
---> Package libXi.x86_64 0:1.7.2-2.1.el7 will be installed
---> Package libXrender.x86_64 0:0.9.8-2.1.el7 will be installed
---> Package libXtst.x86_64 0:1.2.2-2.1.el7 will be installed
---> Package libjpeg-turbo.x86_64 0:1.2.90-5.el7 will be installed
---> Package libpng.x86_64 2:1.5.13-5.el7 will be installed
---> Package libselinux-ruby.x86_64 0:2.2.2-6.el7 will be installed
---> Package pulseaudio-libs.x86_64 0:3.0-22.el7 will be installed
--> Processing Dependency: libsndfile.so.1(libsndfile.so.1.0)(64bit) for package: pulseaudio-libs-3.0-22.el7.x86_64
--> Processing Dependency: libsndfile.so.1()(64bit) for package: pulseaudio-libs-3.0-22.el7.x86_64
--> Processing Dependency: libasyncns.so.0()(64bit) for package: pulseaudio-libs-3.0-22.el7.x86_64
---> Package ruby.x86_64 0:2.0.0.353-22.el7_0 will be installed
--> Processing Dependency: ruby-libs(x86-64) = 2.0.0.353-22.el7_0 for package: ruby-2.0.0.353-22.el7_0.x86_64
--> Processing Dependency: rubygem(bigdecimal) >= 1.2.0 for package: ruby-2.0.0.353-22.el7_0.x86_64
--> Processing Dependency: ruby(rubygems) >= 2.0.14 for package: ruby-2.0.0.353-22.el7_0.x86_64
--> Processing Dependency: libruby.so.2.0()(64bit) for package: ruby-2.0.0.353-22.el7_0.x86_64
---> Package ruby-augeas.x86_64 0:0.4.1-3.el7 will be installed
--> Processing Dependency: augeas-libs >= 0.8.0 for package: ruby-augeas-0.4.1-3.el7.x86_64
--> Processing Dependency: libaugeas.so.0(AUGEAS_0.8.0)(64bit) for package: ruby-augeas-0.4.1-3.el7.x86_64
--> Processing Dependency: libaugeas.so.0(AUGEAS_0.1.0)(64bit) for package: ruby-augeas-0.4.1-3.el7.x86_64
--> Processing Dependency: libaugeas.so.0(AUGEAS_0.12.0)(64bit) for package: ruby-augeas-0.4.1-3.el7.x86_64
--> Processing Dependency: libaugeas.so.0(AUGEAS_0.10.0)(64bit) for package: ruby-augeas-0.4.1-3.el7.x86_64
--> Processing Dependency: libaugeas.so.0(AUGEAS_0.11.0)(64bit) for package: ruby-augeas-0.4.1-3.el7.x86_64
--> Processing Dependency: libaugeas.so.0()(64bit) for package: ruby-augeas-0.4.1-3.el7.x86_64
---> Package ruby-shadow.x86_64 1:2.2.0-2.el7 will be installed
---> Package rubygem-json.x86_64 0:1.7.7-22.el7_0 will be installed
---> Package xorg-x11-fonts-Type1.noarch 0:7.5-9.el7 will be installed
--> Processing Dependency: ttmkfdir for package: xorg-x11-fonts-Type1-7.5-9.el7.noarch
--> Processing Dependency: ttmkfdir for package: xorg-x11-fonts-Type1-7.5-9.el7.noarch
--> Processing Dependency: mkfontdir for package: xorg-x11-fonts-Type1-7.5-9.el7.noarch
--> Processing Dependency: mkfontdir for package: xorg-x11-fonts-Type1-7.5-9.el7.noarch
--> Running transaction check
---> Package atk.x86_64 0:2.8.0-4.el7 will be installed
---> Package augeas-libs.x86_64 0:1.1.0-12.el7_0.1 will be installed
---> Package cairo.x86_64 0:1.12.14-6.el7 will be installed
--> Processing Dependency: libpixman-1.so.0()(64bit) for package: cairo-1.12.14-6.el7.x86_64
--> Processing Dependency: libGL.so.1()(64bit) for package: cairo-1.12.14-6.el7.x86_64
--> Processing Dependency: libEGL.so.1()(64bit) for package: cairo-1.12.14-6.el7.x86_64
---> Package fontpackages-filesystem.noarch 0:1.44-8.el7 will be installed
---> Package gdk-pixbuf2.x86_64 0:2.28.2-4.el7 will be installed
--> Processing Dependency: libtiff.so.5(LIBTIFF_4.0)(64bit) for package: gdk-pixbuf2-2.28.2-4.el7.x86_64
--> Processing Dependency: libtiff.so.5()(64bit) for package: gdk-pixbuf2-2.28.2-4.el7.x86_64
--> Processing Dependency: libjasper.so.1()(64bit) for package: gdk-pixbuf2-2.28.2-4.el7.x86_64
---> Package gtk2.x86_64 0:2.24.22-5.el7_0.1 will be installed
--> Processing Dependency: libXrandr >= 1.2.99.4-2 for package: gtk2-2.24.22-5.el7_0.1.x86_64
--> Processing Dependency: hicolor-icon-theme for package: gtk2-2.24.22-5.el7_0.1.x86_64
--> Processing Dependency: libXrandr.so.2()(64bit) for package: gtk2-2.24.22-5.el7_0.1.x86_64
--> Processing Dependency: libXinerama.so.1()(64bit) for package: gtk2-2.24.22-5.el7_0.1.x86_64
--> Processing Dependency: libXfixes.so.3()(64bit) for package: gtk2-2.24.22-5.el7_0.1.x86_64
--> Processing Dependency: libXdamage.so.1()(64bit) for package: gtk2-2.24.22-5.el7_0.1.x86_64
--> Processing Dependency: libXcursor.so.1()(64bit) for package: gtk2-2.24.22-5.el7_0.1.x86_64
--> Processing Dependency: libXcomposite.so.1()(64bit) for package: gtk2-2.24.22-5.el7_0.1.x86_64
---> Package javapackages-tools.noarch 0:3.4.1-6.el7_0 will be installed
--> Processing Dependency: python-javapackages = 3.4.1-6.el7_0 for package: javapackages-tools-3.4.1-6.el7_0.noarch
--> Processing Dependency: libxslt for package: javapackages-tools-3.4.1-6.el7_0.noarch
---> Package lcms2.x86_64 0:2.5-4.el7 will be installed
---> Package libICE.x86_64 0:1.0.8-7.el7 will be installed
---> Package libSM.x86_64 0:1.2.1-7.el7 will be installed
---> Package libX11-common.noarch 0:1.6.0-2.1.el7 will be installed
---> Package libasyncns.x86_64 0:0.8-7.el7 will be installed
---> Package libsndfile.x86_64 0:1.0.25-9.el7 will be installed
--> Processing Dependency: libvorbisenc.so.2()(64bit) for package: libsndfile-1.0.25-9.el7.x86_64
--> Processing Dependency: libvorbis.so.0()(64bit) for package: libsndfile-1.0.25-9.el7.x86_64
--> Processing Dependency: libogg.so.0()(64bit) for package: libsndfile-1.0.25-9.el7.x86_64
--> Processing Dependency: libgsm.so.1()(64bit) for package: libsndfile-1.0.25-9.el7.x86_64
--> Processing Dependency: libFLAC.so.8()(64bit) for package: libsndfile-1.0.25-9.el7.x86_64
---> Package libxcb.x86_64 0:1.9-5.el7 will be installed
--> Processing Dependency: libXau.so.6()(64bit) for package: libxcb-1.9-5.el7.x86_64
---> Package pango.x86_64 0:1.34.1-5.el7 will be installed
--> Processing Dependency: libthai >= 0.1.9 for package: pango-1.34.1-5.el7.x86_64
--> Processing Dependency: libthai.so.0(LIBTHAI_0.1)(64bit) for package: pango-1.34.1-5.el7.x86_64
--> Processing Dependency: libthai.so.0()(64bit) for package: pango-1.34.1-5.el7.x86_64
--> Processing Dependency: libharfbuzz.so.0()(64bit) for package: pango-1.34.1-5.el7.x86_64
--> Processing Dependency: libXft.so.2()(64bit) for package: pango-1.34.1-5.el7.x86_64
---> Package pciutils.x86_64 0:3.2.1-4.el7 will be installed
---> Package ruby-libs.x86_64 0:2.0.0.353-22.el7_0 will be installed
---> Package rubygem-bigdecimal.x86_64 0:1.2.0-22.el7_0 will be installed
---> Package rubygems.noarch 0:2.0.14-22.el7_0 will be installed
--> Processing Dependency: rubygem(rdoc) >= 4.0.0 for package: rubygems-2.0.14-22.el7_0.noarch
--> Processing Dependency: rubygem(psych) >= 2.0.0 for package: rubygems-2.0.14-22.el7_0.noarch
--> Processing Dependency: rubygem(io-console) >= 0.4.2 for package: rubygems-2.0.14-22.el7_0.noarch
---> Package ttmkfdir.x86_64 0:3.0.9-41.el7 will be installed
---> Package tzdata-java.noarch 0:2015a-1.el7_0 will be installed
---> Package xorg-x11-font-utils.x86_64 1:7.5-18.1.el7 will be installed
--> Processing Dependency: libfontenc.so.1()(64bit) for package: 1:xorg-x11-font-utils-7.5-18.1.el7.x86_64
--> Processing Dependency: libXfont.so.1()(64bit) for package: 1:xorg-x11-font-utils-7.5-18.1.el7.x86_64
--> Running transaction check
---> Package flac-libs.x86_64 0:1.3.0-4.el7 will be installed
---> Package gsm.x86_64 0:1.0.13-11.el7 will be installed
---> Package harfbuzz.x86_64 0:0.9.20-3.el7 will be installed
--> Processing Dependency: libgraphite2.so.3()(64bit) for package: harfbuzz-0.9.20-3.el7.x86_64
---> Package hicolor-icon-theme.noarch 0:0.12-7.el7 will be installed
---> Package jasper-libs.x86_64 0:1.900.1-26.el7_0.3 will be installed
---> Package libXau.x86_64 0:1.0.8-2.1.el7 will be installed
---> Package libXcomposite.x86_64 0:0.4.4-4.1.el7 will be installed
---> Package libXcursor.x86_64 0:1.1.14-2.1.el7 will be installed
---> Package libXdamage.x86_64 0:1.1.4-4.1.el7 will be installed
---> Package libXfixes.x86_64 0:5.0.1-2.1.el7 will be installed
---> Package libXfont.x86_64 0:1.4.7-2.el7_0 will be installed
---> Package libXft.x86_64 0:2.3.1-5.1.el7 will be installed
---> Package libXinerama.x86_64 0:1.1.3-2.1.el7 will be installed
---> Package libXrandr.x86_64 0:1.4.1-2.1.el7 will be installed
---> Package libfontenc.x86_64 0:1.1.1-5.el7 will be installed
---> Package libogg.x86_64 2:1.3.0-7.el7 will be installed
---> Package libthai.x86_64 0:0.1.14-9.el7 will be installed
---> Package libtiff.x86_64 0:4.0.3-14.el7 will be installed
--> Processing Dependency: libjbig.so.2.0()(64bit) for package: libtiff-4.0.3-14.el7.x86_64
---> Package libvorbis.x86_64 1:1.3.3-8.el7 will be installed
---> Package libxslt.x86_64 0:1.1.28-5.el7 will be installed
---> Package mesa-libEGL.x86_64 0:9.2.5-6.20131218.el7_0 will be installed
--> Processing Dependency: mesa-libgbm = 9.2.5-6.20131218.el7_0 for package: mesa-libEGL-9.2.5-6.20131218.el7_0.x86_64
--> Processing Dependency: libglapi.so.0()(64bit) for package: mesa-libEGL-9.2.5-6.20131218.el7_0.x86_64
--> Processing Dependency: libgbm.so.1()(64bit) for package: mesa-libEGL-9.2.5-6.20131218.el7_0.x86_64
---> Package mesa-libGL.x86_64 0:9.2.5-6.20131218.el7_0 will be installed
--> Processing Dependency: libXxf86vm.so.1()(64bit) for package: mesa-libGL-9.2.5-6.20131218.el7_0.x86_64
---> Package pixman.x86_64 0:0.32.4-3.el7 will be installed
---> Package python-javapackages.noarch 0:3.4.1-6.el7_0 will be installed
--> Processing Dependency: python-lxml for package: python-javapackages-3.4.1-6.el7_0.noarch
---> Package rubygem-io-console.x86_64 0:0.4.2-22.el7_0 will be installed
---> Package rubygem-psych.x86_64 0:2.0.0-22.el7_0 will be installed
--> Processing Dependency: libyaml-0.so.2()(64bit) for package: rubygem-psych-2.0.0-22.el7_0.x86_64
---> Package rubygem-rdoc.noarch 0:4.0.0-22.el7_0 will be installed
--> Processing Dependency: ruby(irb) = 2.0.0.353 for package: rubygem-rdoc-4.0.0-22.el7_0.noarch
--> Running transaction check
---> Package graphite2.x86_64 0:1.2.2-5.el7 will be installed
---> Package jbigkit-libs.x86_64 0:2.0-11.el7 will be installed
---> Package libXxf86vm.x86_64 0:1.1.3-2.1.el7 will be installed
---> Package libyaml.x86_64 0:0.1.4-11.el7_0 will be installed
---> Package mesa-libgbm.x86_64 0:9.2.5-6.20131218.el7_0 will be installed
---> Package mesa-libglapi.x86_64 0:9.2.5-6.20131218.el7_0 will be installed
---> Package python-lxml.x86_64 0:3.2.1-4.el7 will be installed
---> Package ruby-irb.noarch 0:2.0.0.353-22.el7_0 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================================================================================================
Package Arch Version Repository Size
=============================================================================================================================================================
Installing:
puppetserver noarch 1.0.2-1.el7 puppetlabs-products 29 M
Installing for dependencies:
atk x86_64 2.8.0-4.el7 base 233 k
augeas-libs x86_64 1.1.0-12.el7_0.1 updates 327 k
cairo x86_64 1.12.14-6.el7 base 697 k
cups-libs x86_64 1:1.6.3-14.el7 base 352 k
facter x86_64 1:2.4.1-1.el7 puppetlabs-products 98 k
flac-libs x86_64 1.3.0-4.el7 base 169 k
fontconfig x86_64 2.10.95-7.el7 base 228 k
fontpackages-filesystem noarch 1.44-8.el7 base 9.9 k
gdk-pixbuf2 x86_64 2.28.2-4.el7 base 533 k
giflib x86_64 4.1.6-9.el7 base 40 k
graphite2 x86_64 1.2.2-5.el7 base 81 k
gsm x86_64 1.0.13-11.el7 base 30 k
gtk2 x86_64 2.24.22-5.el7_0.1 updates 3.4 M
harfbuzz x86_64 0.9.20-3.el7 base 144 k
hicolor-icon-theme noarch 0.12-7.el7 base 42 k
hiera noarch 1.3.4-1.el7 puppetlabs-products 23 k
jasper-libs x86_64 1.900.1-26.el7_0.3 updates 149 k
java-1.7.0-openjdk x86_64 1:1.7.0.75-2.5.4.2.el7_0 updates 197 k
java-1.7.0-openjdk-headless x86_64 1:1.7.0.75-2.5.4.2.el7_0 updates 25 M
javapackages-tools noarch 3.4.1-6.el7_0 updates 72 k
jbigkit-libs x86_64 2.0-11.el7 base 46 k
lcms2 x86_64 2.5-4.el7 base 133 k
libICE x86_64 1.0.8-7.el7 base 63 k
libSM x86_64 1.2.1-7.el7 base 38 k
libX11 x86_64 1.6.0-2.1.el7 base 605 k
libX11-common noarch 1.6.0-2.1.el7 base 181 k
libXau x86_64 1.0.8-2.1.el7 base 29 k
libXcomposite x86_64 0.4.4-4.1.el7 base 22 k
libXcursor x86_64 1.1.14-2.1.el7 base 30 k
libXdamage x86_64 1.1.4-4.1.el7 base 20 k
libXext x86_64 1.3.2-2.1.el7 base 38 k
libXfixes x86_64 5.0.1-2.1.el7 base 18 k
libXfont x86_64 1.4.7-2.el7_0 updates 144 k
libXft x86_64 2.3.1-5.1.el7 base 57 k
libXi x86_64 1.7.2-2.1.el7 base 39 k
libXinerama x86_64 1.1.3-2.1.el7 base 14 k
libXrandr x86_64 1.4.1-2.1.el7 base 25 k
libXrender x86_64 0.9.8-2.1.el7 base 25 k
libXtst x86_64 1.2.2-2.1.el7 base 20 k
libXxf86vm x86_64 1.1.3-2.1.el7 base 17 k
libasyncns x86_64 0.8-7.el7 base 26 k
libfontenc x86_64 1.1.1-5.el7 base 29 k
libjpeg-turbo x86_64 1.2.90-5.el7 base 134 k
libogg x86_64 2:1.3.0-7.el7 base 24 k
libpng x86_64 2:1.5.13-5.el7 base 212 k
libselinux-ruby x86_64 2.2.2-6.el7 base 127 k
libsndfile x86_64 1.0.25-9.el7 base 149 k
libthai x86_64 0.1.14-9.el7 base 187 k
libtiff x86_64 4.0.3-14.el7 base 167 k
libvorbis x86_64 1:1.3.3-8.el7 base 204 k
libxcb x86_64 1.9-5.el7 base 169 k
libxslt x86_64 1.1.28-5.el7 base 242 k
libyaml x86_64 0.1.4-11.el7_0 updates 55 k
mesa-libEGL x86_64 9.2.5-6.20131218.el7_0 updates 69 k
mesa-libGL x86_64 9.2.5-6.20131218.el7_0 updates 142 k
mesa-libgbm x86_64 9.2.5-6.20131218.el7_0 updates 30 k
mesa-libglapi x86_64 9.2.5-6.20131218.el7_0 updates 34 k
pango x86_64 1.34.1-5.el7 base 283 k
pciutils x86_64 3.2.1-4.el7 base 90 k
pixman x86_64 0.32.4-3.el7 base 254 k
pulseaudio-libs x86_64 3.0-22.el7 base 555 k
puppet noarch 3.7.4-1.el7 puppetlabs-products 1.5 M
python-javapackages noarch 3.4.1-6.el7_0 updates 31 k
python-lxml x86_64 3.2.1-4.el7 base 758 k
ruby x86_64 2.0.0.353-22.el7_0 updates 66 k
ruby-augeas x86_64 0.4.1-3.el7 puppetlabs-deps 22 k
ruby-irb noarch 2.0.0.353-22.el7_0 updates 87 k
ruby-libs x86_64 2.0.0.353-22.el7_0 updates 2.8 M
ruby-shadow x86_64 1:2.2.0-2.el7 puppetlabs-deps 14 k
rubygem-bigdecimal x86_64 1.2.0-22.el7_0 updates 78 k
rubygem-io-console x86_64 0.4.2-22.el7_0 updates 49 k
rubygem-json x86_64 1.7.7-22.el7_0 updates 74 k
rubygem-psych x86_64 2.0.0-22.el7_0 updates 76 k
rubygem-rdoc noarch 4.0.0-22.el7_0 updates 317 k
rubygems noarch 2.0.14-22.el7_0 updates 211 k
ttmkfdir x86_64 3.0.9-41.el7 base 47 k
tzdata-java noarch 2015a-1.el7_0 updates 143 k
xorg-x11-font-utils x86_64 1:7.5-18.1.el7 base 87 k
xorg-x11-fonts-Type1 noarch 7.5-9.el7 base 521 k
Transaction Summary
=============================================================================================================================================================
Install 1 Package (+79 Dependent packages)
Total download size: 73 M
Installed size: 178 M
Is this ok [y/d/N]: y
...
...
Complete!
[root@puppetserver ~]#
Now, Puppet Server has been installedsuccessfully with all the requisite packages. Start the Puppet Server service. Please verify and make sure that enough ram is allocated to the OS and JVM. Centos 7.0 comes with systemd as default i.e. system and service manager for Linux.
service puppetserver start
[root@puppetserver ~]# service puppetserver start
Redirecting to /bin/systemctl start puppetserver.service
[root@puppetserver ~]#
[root@puppetserver ~]# ps -ef | grep puppet
puppet 13114 1 99 23:25 ? 00:01:55 java -Xms1g -Xmx1g -XX:MaxPermSize=256m -XX:OnOutOfMemoryError=kill\ -9\ puppetserver -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/puppetserver -Djava.security.egd=/dev/urandom -cp /usr/share/puppetserver/puppet-server-release.jar clojure.main -m puppetlabs.trapperkeeper.main --config /etc/puppetserver/conf.d -b /etc/puppetserver/bootstrap.cfg
root 13416 13076 0 23:26 pts/2 00:00:00 grep --color=auto puppet
[root@puppetserver ~]#
[root@puppetserver ~]# puppet agent -t
Info: Caching certificate_revocation_list for ca
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for puppetserver.puppetlabs.vm
Info: Applying configuration version '1425232646'
Info: Creating state file /var/lib/puppet/state/state.yaml
Notice: Finished catalog run in 0.01 seconds
[root@puppetserver ~]#
Memory Allocation
Puppet Server will be configured to use 2GB of RAM by default. However, while using puppet server in production you should have a good amount of ram assigned to it for optimal performance. The syntax to change the Puppet Server memory allocation is shown below:
Open /etc/sysconfig/puppetserver and modify these settings
# Modify this if you'd like to change the memory allocation, enable JMX, etc
JAVA_ARGS="-Xms2g -Xmx2g -XX:MaxPermSize=256m"
Replace 2g with the amount of memory you want to allocate to Puppet Server. Remember to restart the puppetserver service after making changes to this file.
Puppet Server: Configuration
Puppet Server honors almost all settings in puppet.conf and should pick them up automatically. However for some tasks such as configuring the webserver or an external Certificate Authority new Puppet Server-specific configuration files and settings should be used.
Config files
All of Puppet Server’s new config files and settings are located in the conf.d directory. Here's the tree structure show below. The modules and manifests directory location is /etc/puppet.
[root@puppetserver puppetserver]# pwd
/etc/puppetserver
[root@puppetserver puppetserver]# tree
.
|-- bootstrap.cfg
|-- conf.d
| |-- ca.conf
| |-- global.conf
| |-- os-settings.conf
| |-- puppetserver.conf
| |-- web-routes.conf
| `-- webserver.conf
`-- logback.xml
1 directory, 8 files
[root@puppetserver puppetserver]#
Puppet Server reads all the .conf files located in directory /etc/puppetserver/conf.d at startup.
global.conf
This file contains global configuration settings for Puppet Server. You shouldn’t typically need to make changes to this file. However, you can change the logging-config path for the logback logging configuration file if necessary.
global: {
logging-config: /etc/puppetlabs/puppetserver/logback.xml
}
webserver.conf
This file contains the web server configuration settings. The webserver.conf file looks something like this:
[root@puppetserver conf.d]# cat webserver.conf
webserver: {
client-auth = want
ssl-host = 0.0.0.0
ssl-port = 8140
}
[root@puppetserver conf.d]#
By default, Puppet Server is configured to use the correct Puppet Master and CA certificate.
puppetserver.conf
This file contains the settings for Puppet Server itself.
The jruby-puppet settings configure the interpreter:
- gem-home: This setting determines where JRuby looks for gems. It is also used by the puppetserver gem command line tool. If not specified, uses the Puppet default /var/lib/puppet/jruby-gems.
- master-conf-dir: Optionally set the path to the Puppet configuration directory. If not specified it uses the Puppet default /etc/puppet.
- master-var-dir: Optionally set the path to the Puppet variable directory. If not specified uses the Puppet default /var/lib/puppet.
- max-active-instances: Optionally set the maximum number of JRuby instances to allow. Defaults to ‘num-cpus+2’.
The profiler settings configure profiling:
- enabled: if this is set to true it enables profiling for the Puppet Ruby code. Defaults to false.
The puppet-admin section configures the Puppet Server’s administrative API.
- authorization-required determines whether a client certificate is required to access the endpoints in this API. If set to false, the client-whitelist will be ignored. Defaults to true.
- client-whitelist contains a list of client certnames that are whitelisted to access the admin API. Any requests made to this endpoint that do not present a valid client cert mentioned in this list will be denied access.
ca.conf
This file contains settings for the Certificate Authority service.
-
certificate-status contains settings for the certificate_status HTTP endpoint. This endpoint allows certs to be signed, revoked, and deleted via HTTP requests. This provides full control over Puppet’s security, and access should almost always be heavily restricted.
# CA-related settings certificate-authority: { certificate-status: { authorization-required: true client-whitelist: [] } }
os-settings.conf
This file is set up by packaging and is used to initialize the Ruby load paths for JRuby. The only setting in this file is ruby-load-path.
The Ruby load path defaults to the directory where Puppet is installed. In this release this directory varies depending on what OS you are using.
[root@puppetserver conf.d]# cat os-settings.conf
os-settings: {
ruby-load-path: [/usr/share/ruby/vendor_ruby/]
}
[root@puppetserver conf.d]#
logging.conf
All of Puppet Server’s logging is routed through the JVM Logback library. By default, it logs to /var/log/puppetserver/puppetserver.log By default Puppet Server sends nothing to syslog.
The default Logback configuration file is at /etc/puppetserver/logback.xml
Most of the puppet server configuration setting should be used as default and can be modified when required.
Performance
Puppet Server is fast. It has 3x performance improvement over puppet master. It means that an individaul Puppet Server can handle a much larger volume of puppet agent nodes. The performance gain will increase as it becomes more and more mature. Now we have to deal with simplified configuration in Puppet Server, rather than managing several discrete packages (Apache, Passenger, Puppet, etc.) with their separate configuration interfaces (Puppet Master).
Conclusion
Puppet Server is very straight forward to install and setup. Along with ease, it provides a huge performance improvement over the classic puppet master setup. Now, a single command does all the things (yum install puppetserver) for you.
After some hands on with the new Puppet Server, you will really feel the difference. You will enjoy.