ฉันจะเข้าถึงตัวแปรสภาพแวดล้อม (จากสภาพแวดล้อมของ puppet daemon) ในรายการหุ่นเชิดได้อย่างไร
ฉันจะเข้าถึงตัวแปรสภาพแวดล้อม (จากสภาพแวดล้อมของ puppet daemon) ในรายการหุ่นเชิดได้อย่างไร
คำตอบ:
ฉันคิดว่าเราต้องการข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่คุณพยายามบรรลุ ... Facter exposes โดยค่าเริ่มต้นตัวแปรสภาพแวดล้อม 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 ... ทำไมไม่บอกหุ่นเชิดให้ใช้เส้นทางที่กำหนดหรือผู้ใช้ (สำหรับผู้บริหาร?) อย่างชัดเจน?
คุณต้องใช้ฟังก์ชั่นฝั่งเซิร์ฟเวอร์สำหรับสิ่งนี้หากคุณต้องการสภาพแวดล้อมของ puppetmaster ตั้งแต่ข้อเท็จจริงทำให้คุณได้รับข้อมูลลูกค้า
$ RUBYLIB / หุ่น / parser / ฟังก์ชั่น / env.rb:
module Puppet::Parser::Functions
newfunction(:env) do |args|
variable = args[0]
ENV[variable]
end
end
ใช้ในรายการของคุณเช่น:
$blah = env("PATH")
ใน 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
คำตอบนั้นน่าผิดหวังนิดหน่อย: คุณทำไม่ได้ (เว้นแต่ว่าคุณจะปรับปรุง Puppet หรือ Facter) ฉันเพิ่งเขียนบทความสั้น ๆ เกี่ยวกับหัวข้อนี้: การเข้าถึงตัวแปรสภาพแวดล้อมภายใน Puppet
ข้อมูลสรุปโดยย่อ: Facter ทำงานในทุกระบบตัวแทนของ Puppet เพียงเพิ่ม Facter เพื่อรวบรวมตัวแปรสภาพแวดล้อมทั้งหมดจากนั้นคุณสามารถเข้าถึงตัวแปรเหล่านี้ได้ภายในหุ่นกระบอก
หวังว่าจะช่วย!