Réponses:
Je pense que nous avons besoin de plus d'informations sur ce que vous essayez de réaliser ... Facter expose par défaut les variables d'environnement 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
Mais pour $ PATH ou $ USER ... Pourquoi ne pas dire à la marionnette d'utiliser explicitement un chemin donné ou un utilisateur (pour un exec?)?
Vous auriez besoin d'utiliser une fonction côté serveur pour cela si vous voulez l'environnement du marionnettiste. Depuis facter, vous obtenez des informations sur les clients.
$ RUBYLIB / puppet / parser / functions / env.rb:
module Puppet::Parser::Functions
newfunction(:env) do |args|
variable = args[0]
ENV[variable]
end
end
Utilisez-le dans vos manifestes comme:
$blah = env("PATH")
D'après ce que je peux dire, Puppet fonctionne sans aucune variable d'environnement Bash. Il semble tirer tout son environnement de Facter. Il y a un script ici pour importer vos envvars réguliers en tant qu'envars Facter.
Dans Puppet enterprise 2.5.1, vous pouvez y accéder via / etc / env.
Vérifiez également si l'environnement correct est défini dans votre /etc/puppetlabs/puppet/puppet.conf
- il devrait ressembler à ceci:
[production]
modulepath = /etc/puppetlabs/puppet/environments/production/modules:/opt/puppet/share/puppet/modules
manifest = /etc/puppetlabs/puppet/environments/production/manifests/site.pp
La réponse est un peu décevante: vous ne pouvez pas (sauf si vous améliorez Puppet ou Facter). J'ai récemment écrit un court article de blog sur ce sujet: Accéder aux variables d'environnement dans Puppet
Un bref résumé: Facter s'exécute sur chaque système d'agent Puppet. Améliorez simplement Facter pour collecter toutes les variables d'environnement et ensuite vous pouvez y accéder dans les manifestes Puppet.
J'espère que cela pourra aider!