puppetで puppetmasterd.conf の位置を変える

SVNで管理するため puppetmasterd.conf と modules,templates などがあるディレクトリを同じディレクトリ以下にしたい。
puppetmasterd --helpでオプションを見たが存在しない。puppetmasterdのコードを読むと

result.each { |opt,arg|
        case opt
            when "--daemonize"
                options[:daemonize] = true
....
        else
                Puppet.config.handlearg(opt, arg) 

となっていて、config.handlearg は optの値をシンボル化して Puppet Hash(options) に格納するっぽい。puppetmasterd.conf は Puppet[:config] に格納されているので 起動オプションに「--config=新しいpuppetmasterd.conf のフルパス」と書けばよい

つまり RedHat系で変えたい場合は /etc/sysconfig/puppetmaster を

  # Location of the main manifest
  #PUPPETMASTER_MANIFEST=/etc/puppet/manifests/site.pp
  # Where to log general messages to.
  # Specify syslog to send log messages to the system log.
  #PUPPETMASTER_LOG=syslog

  # You may specify other parameters to the puppetmaster here
- #PUPPETMASTER_EXTRA_OPTS=--noca
+ PUPPETMASTER_EXTRA_OPTS="--config=puppetmasterd.confのフルパス --fileserverconfig=fileserver.confのフルパス"

のように変えてやれば良い