Search code examples
puppetpuppet-enterprise

Deprecation of modulepath in Puppets implicit environments?


Due to the fact that modulepath is now deprecated in a implicit scope (IE main), how can I keep the modulepath for each of my environments? I would like to keep my modules inside of a global scope without having to specify an environment.

[main]
    certname = {somecert}
    dns_alt_names = puppet,{otherorgs}
    vardir = /var/opt/lib/pe-puppet
    logdir = /var/log/pe-puppet
    rundir = /var/run/pe-puppet
    modulepath = $confdir/environments/$environment/modules:/opt/puppet/share/puppet/modules
    manifest = /etc/puppetlabs/puppet/environments/$environment/manifests/site.pp
    server = {puppetserver}
    user  = pe-puppet
    group = pe-puppet
    archive_files = true
    archive_file_server = {puppetserver}

[master]
    certname = {puppetserver}
    ca_name = 'Puppet CA generated on {puppetserver} at 2013-11-07 13:15:40 -0800'
    reports = puppetdb,cimlog,console
    node_terminus = console
    ssl_client_header = SSL_CLIENT_S_DN
    ssl_client_verify_header = SSL_CLIENT_VERIFY
    storeconfigs_backend = puppetdb
    storeconfigs = true
    manifest=$confdir/environments/$environment/manifests/site.pp

[agent]
    report = true
    classfile = $vardir/classes.txt
    localconfig = $vardir/localconfig
    graph = true
    pluginsync = true
    environment = production
    http_compression = true
    splaylimit=1800
    configtimeout=480
    splay=true

Solution

  • It's not perfectly clear what you are asking here, but I shall assume that you care about retaining the ability to keep a global set of modules in /opt/puppet/share/puppet/modules that is independent of the respective environment.

    Puppet allows this through the basemodulepath option.

    [main]
    environmentpath=$confdir/environments
    basemodulepath=/opt/puppet/share/puppet/modules