Bagaimana cara mengakses variabel lingkungan dalam manifes boneka?

15

Bagaimana cara mengakses variabel lingkungan (dari lingkungan daemon boneka) di manifes wayang?

joeforker
sumber
Apakah maksud Anda variabel yang dihasilkan oleh facter?
Scott Pack
Maksud saya variabel lingkungan bash seperti $ PATH dan $ USER.
joeforker

Jawaban:

8

Saya pikir kami memerlukan lebih banyak informasi tentang apa yang ingin Anda capai ... Facter mengekspos secara default FACTER_ variabel lingkungan:

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

Tetapi untuk $ PATH atau $ USER ... Mengapa tidak memberitahu boneka untuk menggunakan jalur yang diberikan atau pengguna (untuk eksekutif?) Secara eksplisit?

jnrg
sumber
Sangat biasa untuk mengontrol penerjemah dengan variabel lingkungan, karena berbagai alasan ... terutama jika Anda berpikir tentang kadang-kadang menggunakan boneka sebagai penerjemah (di baris #!)? Bukan daemon ...
joeforker
Jawaban yang sangat bagus. Saya membuang banyak waktu tidak menyadari bahwa semua variabel Facter memiliki nama huruf kecil bahkan jika variabel lingkungan memiliki nama huruf besar. Semua orang memperhatikan contoh yang diberikan jnrg.
Russell Silva
1
ada tautan rusak
kenorb
7

Anda harus menggunakan fungsi sisi server untuk ini jika Anda menginginkan lingkungan puppetmaster. Karena facter memberi Anda fakta klien.

$ RUBYLIB / boneka / parser / fungsi / env.rb:

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

Gunakan dalam manifes Anda seperti:

$blah = env("PATH")
AndrewF
sumber
6

Dari apa yang saya tahu Puppet berjalan tanpa variabel lingkungan Bash. Tampaknya mendapatkan semua lingkungannya dari Facter. Ada skrip di sini untuk mengimpor utusan reguler Anda sebagai utusan Facter.

Cawflands
sumber
Tautan tidak berfungsi lagi. Bisakah Anda memperbarui jawabannya?
NA
1

Di Puppet enterprise 2.5.1 Anda dapat mengaksesnya melalui / etc / env.

Periksa juga apakah Anda memiliki lingkungan yang benar di lingkungan Anda /etc/puppetlabs/puppet/puppet.conf- seharusnya terlihat seperti ini:

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

Jawabannya agak mengecewakan: Anda tidak bisa (kecuali jika Anda meningkatkan Wayang atau Pelukis). Baru-baru ini saya menulis posting blog pendek tentang topik ini: Mengakses variabel lingkungan dalam Wayang

Ringkasan singkat: Facter berjalan di setiap sistem agen Wayang. Cukup tingkatkan Facter untuk mengumpulkan semua variabel lingkungan dan kemudian Anda dapat mengaksesnya dalam manifestasi Wayang.

Semoga itu bisa membantu!

Valentin
sumber