Foreman can’t import Puppet Environments

foremanpuppetmaster

I'm running Foreman 1.7 with puppet 3.4.3. I've configured my environments using this: http://projects.theforeman.org/projects/foreman/wiki/Troubleshooting#Smart-proxy-do-not-recognize-my-puppet-environment

Of course the default "Production" environment shows, but when clicking "Import from Puppet" it just shows the green box "No changes to your environments detected". $confdir/environments/staging/manifests/site.pp exists, but it didn't seem to be required for Production to show up.

Smart-proxy log shows this:

10.210.102.3 - - [16/Dec/2014 18:06:25] "GET /puppet/environments HTTP/1.1" 200 24 0.0240
10.210.102.3 - - [16/Dec/2014 18:06:25] "GET /puppet/environments/production/classes HTTP/1.1" 200 2 0.0879
10.210.102.3 - - [16/Dec/2014 18:06:25] "GET /puppet/environments/staging/classes HTTP/1.1" 200 2 0.0861

So it's able to find the staging environment.

Any ideas?

puppet.conf

[main]
    logdir = /var/log/puppet
    rundir = /var/run/puppet
    ssldir = $vardir/ssl
    autosign       = $confdir/autosign.conf { mode = 664 }
    show_diff     = false
    hiera_config = $confdir/hiera.yaml

[agent]
    classfile = $vardir/classes.txt
    localconfig = $vardir/localconfig
    default_schedules = false

    report            = true
    pluginsync        = true
    masterport        = 8140
    environment       = production
    certname          = #####
    server            = #####
    listen            = false
    splay             = false
    splaylimit        = 1800
    runinterval       = 1800
    noop              = false
    configtimeout     = 120
    usecacheonfailure = true

[master]
    autosign       = $confdir/autosign.conf { mode = 664 }
    reports        = foreman
    external_nodes = /etc/puppet/node.rb
    node_terminus  = exec
    ca             = true
    ssldir         = /var/lib/puppet/ssl
    certname       = ####
    strict_variables = false
[production]
    modulepath     = /etc/puppet/environments/production/modules:/etc/puppet/environments/common:/etc/puppet/modules:/usr/share/puppet/modules
    config_version =

[staging]
    modulepath     = /etc/puppet/environments/staging/modules:/etc/puppet/environments/common:/etc/puppet/modules:/usr/share/puppet/modules
    config_version =
    manifest = $confdir/environments/staging/manifests/site.pp
    fileserverconfig = /etc/puppet/fileserver.conf
    templatedir=/etc/puppet/templates/

Best Answer

You can add your environment via the Foreman GUI and then run the import. If it does not want to delete the new environment everything is fine.