Jak uzyskać dostęp do zmiennej środowiskowej (ze środowiska demona kukiełkowego) w manifeście marionetkowym?
Jak uzyskać dostęp do zmiennej środowiskowej (ze środowiska demona kukiełkowego) w manifeście marionetkowym?
Odpowiedzi:
Myślę, że potrzebujemy więcej informacji na temat tego, co próbujesz osiągnąć ... Facter domyślnie udostępnia zmienne środowiskowe 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
Ale dla $ PATH lub $ USER ... Dlaczego nie mówi marionetce jawnie użyć danej ścieżki lub użytkownika (dla exec?)?
Aby to zrobić, musisz użyć funkcji po stronie serwera. Od faktora dostajesz fakty od klientów.
$ RUBYLIB / puppet / parser / functions / env.rb:
module Puppet::Parser::Functions
newfunction(:env) do |args|
variable = args[0]
ENV[variable]
end
end
Użyj go w manifestach, takich jak:
$blah = env("PATH")
W Puppet Enterprise 2.5.1 można uzyskać do niego dostęp za pośrednictwem / etc / env.
Sprawdź także, czy masz zdefiniowane prawidłowe środowisko /etc/puppetlabs/puppet/puppet.conf
- powinno to wyglądać mniej więcej tak:
[production]
modulepath = /etc/puppetlabs/puppet/environments/production/modules:/opt/puppet/share/puppet/modules
manifest = /etc/puppetlabs/puppet/environments/production/manifests/site.pp
Odpowiedź jest nieco rozczarowująca: nie możesz (chyba że ulepszysz Puppet lub Facter). Niedawno napisałem krótki post na blogu na ten temat: Dostęp do zmiennych środowiskowych w Puppet
Krótkie streszczenie: Facter działa na każdym systemie agentów Puppet. Po prostu ulepsz Facter, aby zebrał wszystkie zmienne środowiskowe, a następnie będziesz mógł uzyskać do nich dostęp w manifestach Lalek.
Mam nadzieję, że to pomaga!