1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 3.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",
0 0 votes
Article Rating
Notify of
Inline Feedbacks
View all comments
Would love your thoughts, please comment.x
%d bloggers like this: