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 του κελύφους. Για μια ανεξάρτητη λήψη δημόσιου τεχνουργήματος σε επιτρεπόμενη δημόσια διαδρομή, μια καταχώριση από λίστα διαμεσολαβητών HTTP μπορεί να παρέχει το σταθερό τελικό σημείο HTTP όταν ο πελάτης Chef δεν έχει ρυθμισμένο ή διατηρημένο λογαριασμό διαμεσολαβητή. Διατηρήστε τις εσωτερικές εξαιρέσεις του· η επιλογή διεύθυνσης δεν αλλάζει πότε το compile και το converge το καταναλώνουν.

Αν μία λειτουργία χρειάζεται ειδική διαδρομή, βάλτε την αλλαγή διαμόρφωσης και την εκτέλεσή της στο ίδιο πεδίο. Ένας προσαρμοσμένος πόρος με κατάλληλη συμπεριφορά unified-mode είναι μια επιλογή, αλλά το Chef::Config παραμένει καθολικό. Επαναφέρετέ το όταν η λήψη αποτύχει και όταν το αρχείο είναι ήδη ενημερωμένο. Μια ειδοποίηση ενημέρωσης δεν εκτελείται άνευ όρων, και ένας μεταγενέστερος πόρος καθαρισμού μπορεί να μην εκτελεστεί ποτέ μετά από εξαίρεση.

Μια ιδιότητα lazy source αναβάλλει την αξιολόγηση αυτής της ιδιότητας, όχι τις γύρω αναθέσεις Ruby. Η εκτέλεση πόρων κατά το compile είναι μια ξεχωριστή υποστηριζόμενη επιλογή όταν τότε ανήκει η λήψη· αλλάζει επίσης τον χρονισμό εξαρτήσεων και ειδοποιήσεων. Επιλέξτε με βάση πότε ο πελάτης HTTP καταναλώνει τη ρύθμιση διαμεσολαβητή του, αντί να περιμένετε η σειρά δήλωσης να παρέχει απομόνωση.

Σχετικά άρθρα