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

הערך הזמני נעלם לפני שהמשאב הרגיל הזה מוריד משהו:

  1. Compile: Ruby ברמה העליונה שומר את הערך, מגדיר את הפרוקסי הזמני, מצהיר על remote_file ומשחזר את הערך.
  2. Converge: המשאב מבצע את פעולתו בתצורה הזמינה אז.

פרוקסי לקוח יציב עם החרגות פנימיות מתאימות מונע את בעיית התזמון הזו. השתמשו בתחביר ההחרגה המתועד של הלקוח המותקן במקום להניח כללי wildcard של ה-shell. להורדה עצמאית של חפץ ציבורי בנתיב ציבורי מותר, רשומה מרשימת פרוקסי HTTP יכולה לספק את נקודת הקצה היציבה של HTTP כאשר ללקוח Chef אין חשבון פרוקסי מוגדר או שמור. שמרו על ההחרגות הפנימיות שלו; בחירת כתובת אינה משנה מתי compile ו-converge צורכים אותו.

אם פעולה אחת זקוקה לנתיב מיוחד, הניחו את שינוי התצורה וההרצה שלה באותו היקף. משאב מותאם עם התנהגות unified-mode מתאימה הוא אפשרות אחת, אך Chef::Config נשאר גלובלי. שחזרו אותו כאשר ההורדה נכשלת וכאשר הקובץ כבר מעודכן. התראת עדכון אינה פועלת ללא תנאי, ומשאב ניקוי מאוחר יותר עשוי שלא לפעול לעולם לאחר חריגה.

מאפיין lazy source דוחה את הערכת אותו מאפיין, ולא את השמות ה-Ruby שמסביב. הרצת משאבים בזמן compile היא אפשרות נתמכת נפרדת כאשר ההורדה שייכת לשם; היא גם משנה את תזמון התלויות וההתראות. בחרו לפי מתי לקוח ה-HTTP צורך את הגדרת הפרוקסי שלו, במקום לצפות שסדר ההצהרות יספק בידוד.

מאמרים קשורים