Ответы:
Я думаю, что нам нужно больше информации о том, чего вы пытаетесь достичь ... Facter по умолчанию предоставляет переменные среды 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
Но для $ PATH или $ USER ... Почему бы не указать puppet явно использовать заданный путь или пользователя (для exec?) Явно?
Для этого вам нужно использовать функцию на стороне сервера, если вы хотите использовать среду puppetmaster. Так как Факер получает вам факты клиента.
$ RUBYLIB / кукольный / анализатор / функции / env.rb:
module Puppet::Parser::Functions
newfunction(:env) do |args|
variable = args[0]
ENV[variable]
end
end
Используйте это в своих манифестах, таких как:
$blah = env("PATH")
В Puppet enterprise 2.5.1 вы можете получить к нему доступ через / etc / env.
Также проверьте, правильно ли определена ваша среда /etc/puppetlabs/puppet/puppet.conf
- она должна выглядеть примерно так:
[production]
modulepath = /etc/puppetlabs/puppet/environments/production/modules:/opt/puppet/share/puppet/modules
manifest = /etc/puppetlabs/puppet/environments/production/manifests/site.pp
Ответ немного разочаровывает: вы не можете (если вы не улучшите Puppet или Facter). Недавно я написал небольшой пост в блоге на эту тему: Доступ к переменным среды в Puppet
Краткое резюме: Facter работает в каждой системе агентов Puppet. Просто улучшите Facter, чтобы собрать все переменные среды, и тогда вы сможете получить к ним доступ в манифестах Puppet.
Надеюсь, это поможет!