Environmets doesnt work on Puppet 2.7

194 views
Skip to first unread message

Fran Rodríguez

unread,
Nov 29, 2012, 10:02:27 AM11/29/12
to puppet...@googlegroups.com
Hi group, 

I got a problem with environments, im getting this erros from the client:

 Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to parse template ssh/retrieve_priv_key.erb: cannot find key directory: /etc/puppet/environments/production/modules/ssh/private_keys at /etc/puppet/environments/development/modules/ssh/manifests/init.pp:91 

I dont know what is happening because it works before. My puppet.conf on master is this:

[main]
logdir = /var/log/puppet
vardir = /var/lib/puppet
ssldir = /var/lib/puppet/ssl
rundir = /var/run/puppet
factpath = $vardir/lib/facter
templatedir = $confdir/templates
environment = production

prerun_command = /etc/puppet/etckeeper-commit-pre
postrun_command = /etc/puppet/etckeeper-commit-post

[master]
manifest = $confdir/environments/$environment/manifests/site.pp
modulepath = $confdir/environments/$environment/modules

# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY

storeconfigs = true
dbadapter = mysql
dbname = puppetdb
dbuser = puppet
dbpassword = hola
dbserver = localhost
dbsocket = /var/run/mysqld/mysqld.sock

reports = log, foreman

[agent]
environment = production
report = true
pluginsync = true
show_diff = true

Anybody knows what happen?¿

Cheers from Madrid

Walter Heck

unread,
Dec 2, 2012, 7:57:50 PM12/2/12
to puppet...@googlegroups.com
I have seen this happen when a module exists in an environment and not in the main modulepath. Try copying it there, that might solve your problem.

Walter


--
You received this message because you are subscribed to the Google Groups "Puppet Users" group.
To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/LWeA0-guQDYJ.
To post to this group, send email to puppet...@googlegroups.com.
To unsubscribe from this group, send email to puppet-users...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.



--
Walter Heck

--
Check out my startup: Puppet training and consulting @ http://www.olindata.com
Follow @olindata on Twitter and/or 'Like' our Facebook page at http://www.facebook.com/olindata

Fran Rodríguez

unread,
Dec 3, 2012, 4:27:04 AM12/3/12
to puppet...@googlegroups.com
Thanks Walter for the answer, but thats its not a solution because maybe there are plugins which are in development environment and arent on production. I already found the solution this weekend, the problem was the module ssh, it was too old. I have to patch the module for what it accepts environments variable:

Puppet::Module.find "ssh", environment

This was to add  on the template for it works.
Fran Rodríguez
escala NetLabel
http://escalared.com

llowder

unread,
Dec 3, 2012, 9:25:05 AM12/3/12
to puppet...@googlegroups.com


On Thursday, November 29, 2012 9:02:27 AM UTC-6, Fran Rodríguez wrote:
Hi group, 

I got a problem with environments, im getting this erros from the client:

 Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to parse template ssh/retrieve_priv_key.erb: cannot find key directory: /etc/puppet/environments/production/modules/ssh/private_keys at /etc/puppet/environments/development/modules/ssh/manifests/init.pp:91 

I dont know what is happening because it works before. My puppet.conf on master is this:

[main]
logdir = /var/log/puppet
vardir = /var/lib/puppet
ssldir = /var/lib/puppet/ssl
rundir = /var/run/puppet
factpath = $vardir/lib/facter
templatedir = $confdir/templates
environment = production

prerun_command = /etc/puppet/etckeeper-commit-pre
postrun_command = /etc/puppet/etckeeper-commit-post

[master]
manifest = $confdir/environments/$environment/manifests/site.pp
modulepath = $confdir/environments/$environment/modules


You need to either make sure that every environment has a copy of every module you want to use in that environment, OR change your modulepath to include a common, shared area.

I use environments on 2.7.x w/o any problems.

My modulepath is:
modulepath = $confdir/environments/$environment/modules:$confdir/modules

I use the environments directory for all of my custom / normal modules, and then put all of my plugin type / shared modules (like stdlib, concat, hiera-puppet and the 'custom' module I use for distributing my custom facts, types, providers, functions etc)


 

Fran Rodríguez

unread,
Dec 3, 2012, 10:57:04 AM12/3/12
to puppet...@googlegroups.com
+1.

Thats my route and thats what i think, but if the module doesnt use enviroment variable to create the path... bad!! Well, i mean old modules, like mine.

Cheers
Reply all
Reply to author
Forward
0 new messages