Impact Data
Low: This problem has a clear work-around. Simply set:
reportdir = $vardir/reports
rrddir = $vardir/rrd
in puppetmasterd.conf
Summary
When moving from 0.22.1 to 0.22.2, I ran into the following issue starting up puppet:
err: /puppetconfig/reporting/File[/Library/Puppet/Generated/Server/var/reports]/ensure: change from absent to directory failed: Cannot create /Library/Puppet/Generated/Server/var/reports; parent directory /Library/Puppet/Generated/Server/var does not exist
err: /puppetconfig/metrics/File[/Library/Puppet/Generated/Server/var/rrd]/ensure: change from absent to directory failed: Cannot create /Library/Puppet/Generated/Server/var/rrd; parent directory /Library/Puppet/Generated/Server/var does not exist
However, the parent directory does exist.
Expected Behavior
puppetmasterd should create the directory.
Actual Behavior
puppetmasterd doesn't seem to be setting the default value of these configuration options correctly when they are not explicitly set in the configuration file.
Regression
Problem exists in 0.22.2 with ruby 1.8.4, 1.8.5p35, 1.8.6 on CentOS 4.4.
Problem does not exist in 0.22.1.
Failing puppetmasterd.conf:
[puppet]
confdir = /Library/Puppet/Versioned/Server/complete/puppet
vardir = /Library/Puppet/Generated/Server/var
ssldir = /Library/Puppet/Generated/Server/SSL
logdir = $vardir/logs
rundir = $vardir/run
templatedir = $vardir/templates
plugindest = $vardir/plugins
setpidfile = true
statedir = $vardir/state
statefile = $statedir/state.yaml
graphdir = $statedir/graphs
graph = true
syslogfacility = daemon
[puppetd]
server = puppet
# config = $confdir/puppetd.conf
# runinterval = 1800
# noop = false
localconfig = $statedir/localconfig
classfile = $statedir/classes.txt
# puppetport = 8139
# puppetdlog = $logdir/puppetd.log
listen = true
puppetdlockfile = $statedir/puppetdlock
usecacheonfailure = true
# reportserver = $server
# report = false
configtimeout = 120
[puppetmasterd]
user = 0
group = 0
masterport = 8171
manifest = $manifestdir/site.pp
node_name = facter
manifestdir = /Library/Puppet/Versioned/Server/complete/manifests
# masterlog = $logdir/puppetmaster.log
# masterhttplog = $logdir/masterhttp.log
bucketdir = $vardir/bucket
[ast]
paramcheck = true
typecheck = true
[certificates]
privatekeydir = $ssldir
hostprivkey = $ssldir/host_key.pem
publickeydir = $ssldir
hostpubkey = $ssldir/host_pub.pem
certdir = $ssldir
localcacert = $ssldir/ca-trusted.pem
hostcert = $ssldir/host_cert.pem
privatedir = $ssldir/private
[ca]
cadir = $ssldir/ca
capub = $cadir/ca_pub.pem
ca_ttl = 5y
caprivatedir = $cadir/private
cacert = $cadir/ca_crt.pem
ca_md = md5
signeddir = $cadir/signed
csrdir = $cadir/requests
req_bits = 2048
capass = $caprivatedir/ca.pass
autosign = $confdir/autosign.conf
cakey = $cadir/ca_key.pem
ca = true
[fileserver]
fileserverconfig = $confdir/fileserver.conf
[filebucket]
clientbucketdir = $vardir/clientbucket
[reporting]
# reports = store
# reportdir = $vardir/reports
[metrics]
# rrdinterval = $runinterval
# rrddir = $vardir/rrd
# rrdgraph = false
[transaction]
# evaltrace = false
# tags =