꼭두각시 매니페스트에서 환경 변수에 어떻게 액세스합니까?


15

퍼펫 매니페스트에서 (퍼펫 데몬 환경에서) 환경 변수에 어떻게 액세스합니까?


사실에 의해 생성 된 변수를 의미합니까?
Scott Pack

$ PATH 및 $ USER와 같은 bash 환경 변수를 의미합니다.
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가 제공하는 예에주의를 기울이십시오.
Russell Silva

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 환경 변수없이 Puppet이 실행됩니다. Facter에서 모든 환경을 얻는 것 같습니다. 여기 에 일반 envvar를 Facter envvar로 가져 오는 스크립트가 있습니다 .


링크가 더 이상 작동하지 않습니다. 그에 따라 답변을 업데이트 할 수 있습니까?
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 내 환경 변수 액세스

간단한 요약 : Fuper는 모든 Puppet 에이전트 시스템에서 실행됩니다. Facter를 향상시켜 모든 환경 변수를 수집 한 다음 Puppet 매니페스트 내에서 액세스 할 수 있습니다.

희망이 도움이됩니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.