¿Cómo accedo a una variable de entorno en un manifiesto de títeres?

15

¿Cómo accedo a una variable de entorno (desde el entorno del títere demonio) en un manifiesto de títeres?

joeforker
fuente
¿Te refieres a una variable generada por facter?
Scott Pack
Me refiero a las variables de entorno bash como $ PATH y $ USER.
joeforker

Respuestas:

8

Creo que necesitamos más información sobre lo que está tratando de lograr ... Facter expone por defecto las variables de entorno FACTER_:

https://docs.puppetlabs.com/guides/faq.html#can-i-access-environment-variables-with-facter

 $ FACTER_FOO="bar" 
 $ export FACTER_FOO
 $ facter | grep 'foo'
   foo => bar

Pero para $ PATH o $ USER ... ¿Por qué no le dice a Puppet que use una ruta determinada o un usuario (para un ejecutivo) explícitamente?

jnrg
fuente
Es muy normal controlar un intérprete con variables de entorno, por una variedad de razones ... especialmente si piensas en ejecutar a Puppet como intérprete (¿en la línea #!) En lugar de un demonio ...
joeforker
Excelente respuesta Perdí mucho tiempo sin darme cuenta de que todas las variables de Facter tienen nombres en minúscula, incluso si la variable de entorno tiene un nombre en mayúscula. Todos presten mucha atención al ejemplo que da jnrg.
Russell Silva
1
hay un enlace roto
kenorb
7

Necesitaría usar una función del lado del servidor para esto si desea el entorno del puppetmaster. Dado que facter te ofrece datos de clientes.

$ RUBYLIB / puppet / parser / functions / env.rb:

module Puppet::Parser::Functions
  newfunction(:env) do |args|
    variable = args[0]
    ENV[variable]
  end
end

Úselo en sus manifiestos como:

$blah = env("PATH")
AndrewF
fuente
6

Por lo que puedo decir, Puppet se ejecuta sin ninguna variable de entorno Bash. Parece obtener todo su entorno de Facter. Hay un script aquí para importar sus envvars regulares como envvars facter.

Cawflands
fuente
El enlace ya no funciona. ¿Podría actualizar la respuesta en consecuencia?
NA
1

En Puppet Enterprise 2.5.1 puede acceder a través de / etc / env.

Compruebe también si tiene el entorno correcto definido en su /etc/puppetlabs/puppet/puppet.conf- debería verse así:

[production]
  modulepath = /etc/puppetlabs/puppet/environments/production/modules:/opt/puppet/share/puppet/modules
  manifest   = /etc/puppetlabs/puppet/environments/production/manifests/site.pp
Nalinda
fuente
-1

La respuesta es un poco decepcionante: no puede (a menos que mejore Puppet o Facter). Recientemente escribí una breve publicación de blog sobre este tema: Acceso a variables de entorno dentro de Puppet

Un breve resumen: Facter se ejecuta en todos los sistemas de agentes de Puppet. Simplemente mejore Facter para recopilar todas las variables de entorno y luego puede acceder a ellas dentro de los manifiestos de Puppet.

¡Espero que ayude!

Valentin
fuente