How to install & configure Puppet server – part one

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)

Below you will find how to install & configure Puppet server on Solaris.
Part of my DevOps effort I am testing Puppet and Chef server, especially how they work with a Solaris environment.
Note: Part of the documentation below is Solaris specific This guide is using puppet version 4.7

How to install puppet (server and or client)

pkg install puppet

Note:The below install is needed for hiera

gem install json_pure

To configure the server

svccfg -s puppet:master setprop config/
svccfg -s puppet:master refresh

Now enable the server

svcadm enable svc:/application/puppet:master
svcadm enable svc:/application/puppet:user
svcadm enable svc:/application/puppet:main

To configure the client run on the client

svccfg -s puppet:agent setprop config/
svccfg -s puppet:agent refresh

To use the agent you need to check in, and then sign the cert.

# Check an initial agent check in.
puppet agent --test

# On the server sign the cert
puppet cert sign

Now enable the agent on the client

svcadm enable  svc:/application/puppet:agent

Now lets configure the manifest and client structure

# Create directory structure
mkdir -p /etc/puppetlabs/code/environments/production/manifests/classes
mkdir -p /etc/puppetlabs/code/environments/production/modules
mkdir -p /etc/puppetlabs/code/environments/production/hieradata/nodes

Create global site.pp main manifest file
Note: The modules directory name has to be all lowercase
The example below uses default (empty), and two nodes defined, more below.

cat /etc/puppetlabs/code/environments/production/manifests/site.pp
node default { }

node '', '' {
     # classes example
     include create_zfs
     include create_file
     # module example
     include extrafiles

The below example will create the zfs file system (using the build in zfs module), and will create the file “example-ip-file” in /tmp

cat /etc/puppetlabs/code/environments/production/manifests/classes/create_zfs.pp
class create_zfs {
 zfs { 'rpool/test':
  ensure => 'present',
  readonly => 'on',
class create_file {
 file {'/tmp/example-ip-file':
      ensure  => present,
      mode    => '0644',
      content => "Here is my Public IP Address:\n"

Modules are very similar, create a file under modules > [module_name] > manifests > init.pp

cat /etc/puppetlabs/code/environments/production/modules/extrafiles/manifests/init.pp
class extrafiles {
 file {'/var/tmp/file1':
      ensure  => present,
      mode    => '0644',
      content => "Elis file\n",

Leave a Reply

Notify of