Як отримати доступ до змінної середовища в маріонетковому маніфесті?


15

Як я можу отримати доступ до змінної середовища (із середовища лялькового демона) у ляльковому маніфесті?


Ви маєте на увазі змінну, породжену 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 ... Чому б не сказати ляльці явно використовувати певний шлях або користувача (для exec?)?


Дуже звичайно керувати перекладачем змінними середовища з різних причин ... особливо якщо ви думаєте про те, щоб іноді запускати маріонетку як інтерпретатора (у рядку # !?) замість демона ...
joeforker

Відмінна відповідь. Я витрачав багато часу, не помічаючи, що всі змінні Facter мають малі імена, навіть якщо змінна середовища має велике ім'я. Всі пильно звертають увагу на приклад, який дає jnrg.
Рассел Сілва

1
є розірване посилання
kenorb

7

Для цього вам потрібно буде використовувати функцію сервера, якщо ви хочете оточення лялькового майстра. Оскільки фактор отримує факти клієнта.

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

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

Використовуйте його у своїх маніфестах, таких як:

$blah = env("PATH")

6

З того, що я можу сказати, ляльковий запуск без будь-яких змінних середовища Bash. Начебто все своє оточення отримує від Facter. Існує скрипт тут , щоб імпортувати ваші регулярні envvars в Facter envvars.


1
Посилання більше не працює. Чи можете ви, відповідно, оновити відповідь?
NA

1

У ляльковому підприємстві 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

Відповідь трохи невтішна: Ви не можете (якщо не вдосконалити Лялечку чи Фактор). Нещодавно я написав короткий пост у щоденнику на цю тему: Доступ до змінних оточуючих середовищ у Ляльковій

Короткий підсумок: Facter працює у кожній системі лялькових агентів. Просто вдосконаліть Facter, щоб зібрати всі змінні середовища, і тоді ви можете отримати доступ до них у маніфестаціях ляльок.

Сподіваюся, що це допомагає!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.