Problem setting manifest in multiple environments in puppet.

Publicado: junio 22, 2010 en fast-tip, puppet, Technical
Etiquetas:, , , ,

From http://projects.reductivelabs.com/issues/1615

I think that I had the same issue. I want to use multiple environments, but I had a problem, puppet was always looking for the default location /etc/puppet/conf/manifests/site.pp instead of /etc/puppet/conf/data/<env>/manifests/site.pp.

My configuration file looked like this:

[test]
 manifestdir =     /etc/puppet/data/test/manifests
 
[preproduction]
 manifestdir =     /etc/puppet/data/preproduction/manifests
 
[development]
 manifestdir =     /etc/puppet/data/development/manifests
 
[production]
 manifestdir =     /etc/puppet/data/production/manifests
 
[puppetmasterd]
 environments =     test,development,preproduction,production
 manifest =     $manifestdir/site.pp

Well, the problem was the ‘manifest’ entry in puppetmasterd. Puppet will evaluate it globally before evaluate the environments, setting manifest=/etc/puppet/conf/manifests/site.pp for all the environments.

Solution:

You can think that simply comment the line “manifest = $manifestdir/site.pp”, woudl work since it is the default, but not. Neither writing “manifest = $manifestdir/site.pp” in each environmnet stanza works. You must set the full qualified path to the site.pp: manifest = /etc/puppet/conf/data/<env>/manifests/site.pp

Indeed, I think that you can not use vars in the environment stanzas, but I have to confirm it.

You can test the values using these commands in the puppetmaster host:

$ puppetd --environment development --configprint manifest --config /etc/puppet/puppet.conf
/etc/puppet/conf/manifests/site.pp
$ puppetd --environment development --configprint manifest --config /etc/puppet/puppet.conf
/etc/puppet/conf/manifests/site.pp

And after set the manifest in each environment stanza:

$ puppetd --environment development --configprint manifest --config /etc/puppet/puppet.conf
/etc/puppet/data/development/site.pp

I read somewhere that manifestdir wil be obsolete in future versions.

Well, the problem was the ‘manifest’ entry in puppetmasterd. Puppet will evaluate it globally before evaluate the environments, setting manifest=/etc/puppet/conf/manifests/site.pp for all the environments.

Solution: simply comment the line “manifest = $manifestdir/site.pp”. That is the default, so it is ok to comment it. Other option is to include it in all environment stanzas, so you will always overwrite it value.

I read somewhere that manifestdir wil be obsolete in future versions.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s