Skip to main content
Logo

Solaris 11 Enable Puppet Environment Directories

July 31, 2017
5 min read

I recently changed a puppet environment to use environment directories and since this is on Solaris I made some notes. I do not include any puppet master or agent setup here only the changes I made to enable directory environments.

https://docs.puppet.com/puppet/3.7/environments\_configuring.html

Since this is Solaris and using SMF we can”t just edit puppet.conf

# svccfg -s svc:/application/puppet:master setprop config/environmentpath=/etc/puppet/environments
# svcadm refresh puppet:master
# svcadm restart puppet:master
root@usli-utility:/etc/puppet/environments/dev/manifests# more /etc/puppet/puppet.conf
# WARNING: THIS FILE GENERATED FROM SMF DATA.
# DO NOT EDIT THIS FILE. EDITS WILL BE LOST.
#
# See puppet.conf(5) and http://docs.puppetlabs.com/guides/configuring.html
# for details.
[master]
environmentpath = /etc/puppet/environments
logdest = /var/log/puppet/puppet-master.log
server = puppetmaster.domain.com

Take a look at the structure.

# pwd
/etc/puppet/environments

# tree
.
|– dev
| |– environment.conf
| |– manifests
| | |– site.pp
| | |– node-eb31.pp
| | |– node-eb32.pp
| | – node-eb31.pp | – modules
|– dr
| |– environment.conf
| |– manifests
| | |– site.pp
| | |– node-eb01.pp
| | – node-bk01.pp | – modules
|– production
| – manifests | |– site.pp | |– node-ag11.pp | |– node-em01.pp – tst
|– environment.conf
|– manifests
| |– site.pp
| – node-ag11.pp – modules
[/bash]

To reload configuration I am restarting puppet like this.

# svcadm disable puppet:master
# svcadm enable puppet:master

At the same time as enabling directory environments I simplified node manifests and captured here.
Node I could have used modules/classed but define is quicker and still fit my needs.

Add environments.onf file.

# pwd
/etc/puppet/environments/dev
# cat environment.conf
manifest = manifests/

Using combination of site.pp and node specific manifests. I snipped both files for the relevant code.

# pwd
/etc/puppet/environments/dev/manifests

# cat site.pp
custommsg="DEVenvironmentpuppetConfigManagementv0.9.4IPAddress:custommsg= " DEV environment puppet Config Management v0.9.4 IP Address : {ipaddress_net0}
Environment : environment"definecheck_project({environment} " define check\_project( msg = params::msg,params::msg, g = group ) { #notify{ g: }
execPath = "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:" exec { "projmod max-sem-ids": command => "projmod -sK "project.max-sem-ids=(privileged,100,deny)" group.g”,
require => Exec[“projadd group.g"\], unless => "projects -l group.g | grep max-sem-ids | grep -c 100”,
path => $execPath,
}
}

if “-dsdb-” in hostname { #notify {"{hostname} identified as an Oracle DB server will apply project and network tuning steps”:}
$execPath = “/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:”

exec { “ipadm smallest_anon_port tcp”:
command => “ipadm set-prop -p smallest_anon_port=9000 tcp”,
path => $execPath,
onlyif => “ipadm show-prop -o CURRENT -c -p smallest_anon_port tcp | grep -v 9000”
}
}

node default {
}

# more node-eb31.pp
node “node-eb31.domain.com” {

host { “node-eb31.domain.com”:
ip => “10.2.14.95”,
host_aliases => [“node-eb31′,“loghost”],
}

group="ebsdev3"group = "ebsdev3" user = “ebsdev3_o”
gid="303"gid = "303" storage = “10.2.14.35”
storage_archive="10.2.14.33"storage\_archive = "10.2.14.33" A_environment = “EBSDEV3”

execPath = "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:" exec { "projadd group.group”:
command => “projadd -U userGuser -G group -p gidgroup.gid group.group”,
require => User[“user"\], unless => "projects -l | grep -c group.group”,
path => $execPath,
}

exec { “usermod user": command => "usermod -K project=group.group user", require => \[User\["user”],Exec[“projadd group.group"\],\], unless => "projects -l group.group | grep users | grep -c user", path => execPath,
}

#### DB and Project Setting Checks
exec { “projmod max-shm-memory”:
command => “projmod -sK “project.max-shm-memory=(privileged,10737418240,deny)” group.group", require => \[User\["user”],Exec[“projadd group.group"\],\], unless => "projects -l group.group | grep project.max-shm-memory | grep -c 10737418240”,
path => $execPath,
}

check_project { $group: }

b1="/u01/oradata/b1 = "/u01/oradata/A_environment”

file {
[ “/u01” ]:
ensure => directory,
#group => “401”,
mode => 0755;
[ “/software”,“/scratch” ]:
ensure => directory,
group => “401”,
mode => 0775;
[ “/var/opt/oracle”,“/u01/oradata”,“/u01/app”,“/u01/diag”,“/u01/diag/ARB_environment","{ARB\_environment}","{b1}/data”,“b1/data1","{b1}/data1","{b1}/redo”,“b1/undo","{b1}/undo","{b1}/temp”,“b1/archdest1","{b1}/archdest1","{b1}/a
rchdest3”,“{b1}/fra", \]: ensure => directory, owner => "{user}“,
group => “{group}", mode => "775"; \[ "/apps", "/apptmp" \]: ensure => directory, #group => "{group}“,
mode => 0755;
}

#### NFS Mounts Start
nfs\_defaults1 = { ensure => "present", fstype => "nfs", pass => "-", options => "rw,bg,vers=3,proto=tcp,sec=sys,hard,intr,rsize=1048576,wsize=1048576,retrans=5,timeo=600", atboot => yes, blockdevice => "-" } nfs_defaults2 = {
ensure => “present”,
fstype => “nfs”,
pass => ”-“,
options => “rw,bg,vers=3,proto=tcp,sec=sys,hard,nointr,llock,rsize=1048576,wsize=1048576,retrans=5,timeo=600”,
atboot => yes,
blockdevice => ”-“
}
nfs\_defaults3 = { ensure => "present", fstype => "nfs", pass => "-", options => "rw,bg,hard,rsize=1048576,wsize=1048576,vers=3,llock,nointr,proto=tcp,suid", atboot => yes, blockdevice => "-" } nfs_defaults4 = {
ensure => “present”,
fstype => “nfs”,
pass => ”-“,
options => “rw,bg,hard,rsize=1048576,wsize=1048576,vers=3,nointr,proto=tcp,suid”,
atboot => yes,
blockdevice => ”-”
}

nfs\_mounts1 = { "/u01/app" => { device => "storage:/export/USLI-MIDTIER/{ARB\_environment}/DBHOME", }, } nfs_mounts2 = {
“/apps” => {
device => “storage:/export/USLIMIDTIER/storage:/export/USLI-MIDTIER/ARB_environment/APPS_CLONED”,
},
“/apptmp” => {
device => “storage:/export/USLIMIDTIER/storage:/export/USLI-MIDTIER/ARB_environment/APPTMP”,
},
“/u01/diag/{ARB\_environment}" => { device => "storage:/export/USLI-MIDTIER/{ARB\_environment}/DIAG", }, } nfs_mounts3 = {
“/u01/oradata/ARB\_environment/data" => { device => "storage:/export/USLI-MIDTIER/ARB\_environment/DBDBF\_CLONED", }, "/u01/oradata/ARB_environment/data1” => {
device => “10.2.14.35:/export/USLI-HIGHTIER/ARB\_environment/DBDBF1\_CLONED", }, "/u01/oradata/ARB_environment/redo” => {
device => “storage:/export/USLI-HIGHTIER/EBSDEV3/DBREDO", }, "/u01/oradata/ARB_environment/undo” => {
device => “storage:/export/USLIMIDTIER/storage:/export/USLI-MIDTIER/ARB_environment/DBUNDO_CLONED”,
},
“/u01/oradata/ARB\_environment/temp" => { device => "storage:/export/USLI-HIGHTIER/DBTEMP/EBSDEV3”,
},
“/u01/oradata/ARB\_environment/archdest1" => { device => "{storage}:/export/USLI-MIDTIER/DBARCH/{ARB\_environment}\_DEST\_1", }, "/u01/oradata/ARB_environment/archdest3” => {
device => “{storage}:/export/USLI-HIGHTIER/DBARCH/EBSDEV3\_DEST\_3", }, "/u01/oradata/ARB_environment/fra” => {
device => “storage:/export/USLIMIDTIER/storage:/export/USLI-MIDTIER/ARB_environment/DBFRA”,
},
}

nfs\_mounts4 = { "/software" => { device => "storage_archive:/export/NONPRD/STAGING/software”,
},
“/scratch” => {
device => “$storage:/export/USLI-MIDTIER/UTILITY/SCRATCH”,
},
}

create_resources(mount, nfs_mounts1,nfs\_mounts1, nfs_defaults1)
create_resources(mount, nfs_mounts2,nfs\_mounts2, nfs_defaults2)
create_resources(mount, nfs_mounts3,nfs\_mounts3, nfs_defaults3)
create_resources(mount, nfs_mounts4,nfs\_mounts4, nfs_defaults4)

#### NFS Mounts End
}

# pwd
/etc/puppet/environments

root@usli-utility:/etc/puppet/environments# hg commit
root@usli-utility:/etc/puppet/environments# cd ..
root@usli-utility:/etc/puppet# rsync -a –no-owner –no-group * /net/usli-psst-zf01.mgmt.asg.ad/export/NONPRD/UTILITY/CHANGELOGS/puppet/usli/

### Client
# svccfg -s svc:/application/puppet:agent setprop config/environment=DEV
# svcadm refresh puppet:agent
# svcadm restart puppet:agent

cat /etc/puppet/puppet.conf
# WARNING: THIS FILE GENERATED FROM SMF DATA.
# DO NOT EDIT THIS FILE. EDITS WILL BE LOST.
#
# See puppet.conf(5) and http://docs.puppetlabs.com/guides/configuring.html
# for details.
[agent]
environment = dev
logdest = /var/log/puppet/puppet-agent.log
server = usli-utility.mgmt.asg.ad

# puppet agent –test
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for usli-dsdb-eb31.dev.asg.ad
Info: Applying configuration version “1501606469”
Notice: Finished catalog run in 3.43 seconds