ฉันจะเข้าถึงตัวแปรสภาพแวดล้อมในรายการหุ่นเชิดได้อย่างไร


15

ฉันจะเข้าถึงตัวแปรสภาพแวดล้อม (จากสภาพแวดล้อมของ puppet daemon) ในรายการหุ่นเชิดได้อย่างไร


คุณหมายถึงตัวแปรที่สร้างโดย facter หรือไม่
Scott Pack

ฉันหมายถึงตัวแปรสภาพแวดล้อมของ bash เช่น $ PATH และ $ USER
joeforker

คำตอบ:


8

ฉันคิดว่าเราต้องการข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่คุณพยายามบรรลุ ... 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 ... ทำไมไม่บอกหุ่นเชิดให้ใช้เส้นทางที่กำหนดหรือผู้ใช้ (สำหรับผู้บริหาร?) อย่างชัดเจน?


เป็นเรื่องธรรมดามากที่จะควบคุมล่ามด้วยตัวแปรสภาพแวดล้อมด้วยเหตุผลหลายประการ ... โดยเฉพาะอย่างยิ่งถ้าคุณคิดว่าบางครั้งการใช้หุ่นกระบอกเป็นล่าม (ใน #! line?) แทนที่จะเป็น daemon ...
joeforker

คำตอบที่ยอดเยี่ยม ฉันเสียเวลามากที่ไม่ได้สังเกตว่าตัวแปร Facter ทั้งหมดมีชื่อตัวพิมพ์เล็กแม้ว่าตัวแปรสภาพแวดล้อมจะมีชื่อตัวพิมพ์ใหญ่ ทุกคนใส่ใจกับตัวอย่างที่ jnrg ให้
รัสเซลซิลวา

1
มีการเชื่อมโยงที่ขาด
kenorb

7

คุณต้องใช้ฟังก์ชั่นฝั่งเซิร์ฟเวอร์สำหรับสิ่งนี้หากคุณต้องการสภาพแวดล้อมของ puppetmaster ตั้งแต่ข้อเท็จจริงทำให้คุณได้รับข้อมูลลูกค้า

$ RUBYLIB / หุ่น / parser / ฟังก์ชั่น / env.rb:

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

ใช้ในรายการของคุณเช่น:

$blah = env("PATH")

6

จากสิ่งที่ฉันสามารถบอกให้ Puppet ทำงานโดยไม่มีตัวแปรสภาพแวดล้อม Bash ดูเหมือนว่าจะได้รับสภาพแวดล้อมทั้งหมดจาก Facter มีสคริปต์ที่นี่เพื่อนำเข้า envvars ปกติของคุณเป็น Facter envvars


ลิงค์ไม่ทำงานอีกต่อไป คุณช่วยอัพเดทคำตอบให้ไหม
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

ข้อมูลสรุปโดยย่อ: Facter ทำงานในทุกระบบตัวแทนของ Puppet เพียงเพิ่ม Facter เพื่อรวบรวมตัวแปรสภาพแวดล้อมทั้งหมดจากนั้นคุณสามารถเข้าถึงตัวแปรเหล่านี้ได้ภายในหุ่นกระบอก

หวังว่าจะช่วย!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.