Kukla bildirimindeki ortam değişkenine nasıl erişirim?


15

Bir kukla bildiriminde bir ortam değişkenine (kukla arka plan programının ortamından) nasıl erişebilirim?


Yani facter tarafından üretilen bir değişken mi demek istediniz?
Scott Pack 0

$ PATH ve $ USER gibi bash ortam değişkenlerini kastediyorum.
joeforker

Yanıtlar:


8

Sanırım elde etmeye çalıştığınız şeyler hakkında daha fazla bilgiye ihtiyacımız var ... Facter varsayılan olarak FACTER_ ortam değişkenlerine maruz kalıyor:

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

Ancak $ PATH veya $ USER için ... Neden kuklaya belirli bir yolu veya bir kullanıcıyı (exec için?) Açıkça kullanmasını söylemiyorsunuz?


Çeşitli nedenlerden ötürü bir tercümanı çevre değişkenleriyle kontrol etmek çok sıradan ... özellikle kuklayı bazen bir daemon yerine bir tercüman olarak (#!
Satırında

Mükemmel cevap. Ortam değişkeninin büyük harfli bir adı olsa bile, tüm Facter değişkenlerinin küçük harfli adlara sahip olduğunu fark etmeden çok zaman harcadım. Herkes jnrg'nin verdiği örneğe çok dikkat eder.
Russell Silva

1
kırık bağlantı var
kenorb

7

Kuklacının ortamını istiyorsanız, bunun için bir sunucu tarafı işlevi kullanmanız gerekir. Facter size müşteri gerçekleri alır beri.

$ RUBYLIB / kukla / çözümleyici / işlevleri / env.rb:

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

Manifestlerinizde şu şekilde kullanın:

$blah = env("PATH")

6

Ne söyleyebilirim ki Kukla herhangi bir Bash ortam değişkeni olmadan çalışır. Tüm çevresini Facter'dan alıyor gibi görünüyor. Burada Facter envvars olarak normal envvarlarınızı almak için bir komut dosyası var .


1
Bağlantı artık çalışmıyor. Cevabı buna göre güncelleyebilir misiniz?
NA

1

Kukla kurumsal 2.5.1'de / etc / env.

Ayrıca, sizin tanımladığınız doğru ortama sahip olup olmadığınızı da kontrol edin /etc/puppetlabs/puppet/puppet.conf- şöyle görünmelidir:

[production]
  modulepath = /etc/puppetlabs/puppet/environments/production/modules:/opt/puppet/share/puppet/modules
  manifest   = /etc/puppetlabs/puppet/environments/production/manifests/site.pp

-1

Cevap biraz hayal kırıklığı yaratıyor: Yapamazsınız (Kukla ya da Facter'ı geliştirmedikçe). Kısa bir süre önce bu konuyla ilgili kısa bir blog yazısı yazdım: Kukla içindeki ortam değişkenlerine erişim

Kısa bir özet: Facter her Kukla aracı sisteminde çalışıyor. Tüm ortam değişkenlerini toplamak için Facter'ı basitçe geliştirin ve sonra Kukla manifestleri içinde bunlara erişebilirsiniz.

Umarım yardımcı olur!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.