การตั้งค่าพร็อกซีของ Chef ในช่วง compile และ converge
พิจารณาการคอมไพล์สูตรและการทำงานของรีซอร์สเมื่อเปลี่ยนพร็อกซีส่วนกลางสำหรับการกระทำ remote_file หนึ่งครั้ง
previous = Chef::Config[:http_proxy]
Chef::Config[:http_proxy] = 'http://proxy.example.net:8080'
remote_file '/var/tmp/package.zip' do
source 'https://downloads.example.net/package.zip'
end
Chef::Config[:http_proxy] = previousค่าชั่วคราวได้หายไปก่อนที่รีซอร์สธรรมดานี้จะดาวน์โหลดสิ่งใด:
- Compile: Ruby ระดับบนสุดบันทึกค่า ตั้งพร็อกซีชั่วคราว ประกาศ
remote_fileแล้วคืนค่าเดิม - Converge: รีซอร์สดำเนินการโดยใช้การกำหนดค่าที่มีอยู่ในตอนนั้น
พร็อกซีไคลเอนต์ที่เสถียรซึ่งมีข้อยกเว้นภายในที่เหมาะสมช่วยหลีกเลี่ยงปัญหาด้านจังหวะเวลานี้ ใช้ไวยากรณ์ข้อยกเว้นตามเอกสารของไคลเอนต์ที่ติดตั้งไว้ แทนการสมมติกฎ wildcard ของเชลล์ สำหรับการดาวน์โหลดอาร์ติแฟกต์สาธารณะโดยอิสระบนเส้นทางสาธารณะที่ได้รับอนุญาต รายการจากรายการพร็อกซี HTTPสามารถให้ปลายทาง HTTP ที่เสถียรเมื่อไคลเอนต์ Chef ไม่มีบัญชีพร็อกซีที่กำหนดค่าไว้หรือเก็บไว้ คงข้อยกเว้นภายในไว้ การเลือกที่อยู่ไม่เปลี่ยนเวลาที่ compile และ converge ใช้มัน
หากการดำเนินการหนึ่งต้องการเส้นทางพิเศษ ให้วางการเปลี่ยนการกำหนดค่าและการทำงานไว้ในขอบเขตเดียวกัน รีซอร์สแบบกำหนดเองที่มีพฤติกรรม unified-mode ที่เหมาะสมเป็นทางเลือกหนึ่ง แต่ Chef::Config ยังคงเป็นส่วนกลาง การแจ้งเตือนการอัปเดตไม่ทำงานอย่างไม่มีเงื่อนไข และรีซอร์สทำความสะอาดในภายหลังอาจไม่ทำงานเลยหลังจากเกิดข้อยกเว้น
พร็อพเพอร์ตี lazy source เลื่อนการประเมินพร็อพเพอร์ตีนั้น ไม่ใช่การกำหนดค่า Ruby โดยรอบ การทำงานของรีซอร์ส ณ เวลา compile เป็นทางเลือกที่รองรับแยกต่างหากเมื่อการดาวน์โหลดควรเกิดขึ้นตอนนั้น นอกจากนี้ยังเปลี่ยนจังหวะเวลาของการพึ่งพาและการแจ้งเตือน เลือกตามเวลาที่ไคลเอนต์ HTTP ใช้การตั้งค่าพร็อกซีของตน แทนที่จะคาดหวังว่าลำดับการประกาศจะให้การแยกจากกัน