Назад | Перейти на главную страницу

Как получить доступ к переменной среды в манифесте марионетки?

Как получить доступ к переменной среды (из среды демона марионетки) в манифесте марионетки?

Я думаю, нам нужно больше информации о том, чего вы пытаетесь достичь ... 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 ... Почему бы не указать марионетке явно использовать заданный путь или пользователя (для выполнения?)?

Для этого вам нужно будет использовать функцию на стороне сервера, если вам нужна среда марионеточного мастера. Поскольку фактер предоставляет вам факты о клиентах.

$ RUBYLIB / марионетка / парсер / функции / env.rb:

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

Используйте его в своих манифестах, например:

$blah = env("PATH")

Насколько я могу судить, Puppet работает без каких-либо переменных среды Bash. Кажется, он получил все свое окружение от Facter. Есть сценарий Вот чтобы импортировать ваши обычные envvars как Facter envvars.

В 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.

Надеюсь, это поможет!