Antworten:
Ich denke, wir brauchen mehr Informationen darüber, was Sie erreichen wollen ... Facter legt standardmäßig die Umgebungsvariablen FACTER_ offen:
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
Aber für $ PATH oder $ USER ... Warum weist Puppet nicht an, einen bestimmten Pfad oder einen Benutzer (für einen Exec?) Explizit zu verwenden?
Dazu müssten Sie eine serverseitige Funktion verwenden, wenn Sie die Umgebung des Puppenmeisters verwenden möchten. Da facter Ihnen Kundendaten liefert.
$ RUBYLIB / puppet / parser / functions / env.rb:
module Puppet::Parser::Functions
newfunction(:env) do |args|
variable = args[0]
ENV[variable]
end
end
Verwenden Sie es in Ihren Manifesten wie:
$blah = env("PATH")
Soweit ich weiß, läuft Puppet ohne Bash-Umgebungsvariablen. Es scheint seine gesamte Umgebung von Facter zu beziehen. Hier gibt es ein Skript , mit dem Sie Ihre regulären Envvars als Facter-Envvars importieren können.
In Puppet Enterprise 2.5.1 können Sie über / etc / env darauf zugreifen.
Überprüfen Sie auch, ob in Ihrer Umgebung die richtige Umgebung definiert ist /etc/puppetlabs/puppet/puppet.conf
- sie sollte ungefähr so aussehen:
[production]
modulepath = /etc/puppetlabs/puppet/environments/production/modules:/opt/puppet/share/puppet/modules
manifest = /etc/puppetlabs/puppet/environments/production/manifests/site.pp
Die Antwort ist ein bisschen enttäuschend: Sie können nicht (es sei denn, Sie verbessern Puppet oder Facter). Ich habe kürzlich einen kurzen Blog-Beitrag zu diesem Thema geschrieben: Zugriff auf Umgebungsvariablen in Puppet
Eine kurze Zusammenfassung: Facter läuft auf jedem Puppet-Agentensystem. Erweitern Sie Facter einfach, um alle Umgebungsvariablen zu erfassen, und greifen Sie dann in Puppet-Manifesten darauf zu.
Ich hoffe, das hilft!