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


15

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


Вы имеете в виду переменную, сгенерированную facter?
Скотт Пак

Я имею в виду переменные окружения bash, такие как $ PATH и $ USER.
Joeforker

Ответы:


8

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


Очень часто управлять интерпретатором с помощью переменных окружения по разным причинам ... особенно если вы думаете о том, чтобы иногда запускать puppet в качестве интерпретатора (в строке #!?) Вместо демона ...
joeforker

Отличный ответ. Я потратил много времени, не замечая, что все переменные Facter имеют имена в нижнем регистре, даже если переменная среды имеет имя в верхнем регистре. Все обращают пристальное внимание на пример, который дает jnrg.
Рассел Сильва

1
есть неработающая ссылка
kenorb

7

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

$ RUBYLIB / кукольный / анализатор / функции / env.rb:

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

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

$blah = env("PATH")

6

Из того, что я могу сказать, Puppet работает без переменных окружения Bash. Кажется, чтобы получить всю свою среду от Facter. Существует скрипт здесь , чтобы импортировать ваши регулярные envvars в Facter envvars.


Ссылка больше не работает. Не могли бы вы обновить ответ соответственно?
NA

1

В 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

-1

Ответ немного разочаровывает: вы не можете (если вы не улучшите Puppet или Facter). Недавно я написал небольшой пост в блоге на эту тему: Доступ к переменным среды в Puppet

Краткое резюме: Facter работает в каждой системе агентов Puppet. Просто улучшите Facter, чтобы собрать все переменные среды, и тогда вы сможете получить к ним доступ в манифестах Puppet.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.