วิธีการค้นหาสภาพแวดล้อมของเชฟในสูตร?


30

ฉันต้องการเรียกใช้ทรัพยากร cookbook_file เฉพาะเมื่อสภาพแวดล้อมปัจจุบันเป็น "dev" สิ่งนี้จะแสดงได้อย่างไร?

เอกสารแนะนำสิ่งนี้:

ในสูตรบล็อกรหัสเช่นนี้จะเป็นประโยชน์:

qa_nodes = search(:node,"chef_environment:QA")      
qa_nodes.each do |qa_node|                          
    # Do useful specific to qa nodes only
end

แต่ฉันไม่แน่ใจว่าเป็นสิ่งที่ฉันต้องการ - ความจริงมันเป็นวงดูเหมือนผิด

คำตอบ:


46

ดูในแอตทริบิวต์ Ruby ของ Chef_environment (ไม่ใช่แอตทริบิวต์ Chef ปกติ) บนโหนด:

if node.chef_environment == "dev"
  # stuff
end

7
โดยเฉพาะอย่างยิ่ง chef_environment เป็นวิธีการในการ Chef :: Node วัตถุที่ส่งกลับค่าของสภาพแวดล้อมของโหนด ไม่ใช่แอตทริบิวต์ของโหนดและไม่ควรสับสนเช่นนี้
jtimberman

ขอบคุณ @ jtimberman ฉันคิดเสมอว่าสภาพแวดล้อมเป็นคุณลักษณะของโหนด แต่มันก็สมเหตุสมผลแล้ว
ทิมพอตเตอร์

3
เยี่ยมมากมันใช้งานได้ดี only_if { node.chef_environment == "dev" }ดังนั้นคำตอบสำหรับคำถามเดิมของฉันคือการเพิ่ม ได้รับการยืนยัน
Steve Bennett

ไม่สามารถรับคำตอบนี้ให้ทำงานได้ ไวยากรณ์นี้ใช้งานได้สำหรับฉัน: if "#{node.chef_environment}" == "dev"
spuder

2

อีกวิธีที่สง่างาม:

if ['production','development'].include? node.chef_environment
    #do something here
end
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.