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

Giá trị tạm thời đã biến mất trước khi tài nguyên thông thường này tải xuống bất cứ thứ gì:

  1. Compile: Ruby cấp cao nhất lưu giá trị, đặt proxy tạm thời, khai báo remote_file và khôi phục giá trị.
  2. Converge: tài nguyên thực hiện hành động của nó với cấu hình có sẵn vào lúc đó.

Một proxy máy khách ổn định với các loại trừ nội bộ phù hợp sẽ tránh được vấn đề thời điểm này. Hãy dùng cú pháp loại trừ đã được ghi chép của máy khách đã cài đặt thay vì giả định các quy tắc wildcard của shell. Đối với việc tải xuống độc lập một artefact công khai trên tuyến công khai được phép, một mục từ danh sách proxy HTTP có thể cung cấp điểm cuối HTTP ổn định khi máy khách Chef không có tài khoản proxy nào được cấu hình hoặc lưu giữ. Hãy giữ các loại trừ nội bộ của nó; việc chọn địa chỉ không thay đổi thời điểm compile và converge sử dụng nó.

Nếu một thao tác cần tuyến đặc biệt, hãy đặt thay đổi cấu hình và việc thực thi của nó trong cùng một phạm vi. Một tài nguyên tùy chỉnh với hành vi unified-mode phù hợp là một lựa chọn, nhưng Chef::Config vẫn là toàn cục. Hãy khôi phục nó khi tải xuống thất bại và khi tệp đã được cập nhật. Thông báo cập nhật không chạy vô điều kiện, và một tài nguyên dọn dẹp sau đó có thể không bao giờ chạy sau một ngoại lệ.

Thuộc tính lazy source hoãn việc đánh giá thuộc tính đó, không hoãn các phép gán Ruby xung quanh. Thực thi tài nguyên tại thời điểm compile là một lựa chọn được hỗ trợ riêng khi việc tải xuống thuộc về thời điểm đó; nó cũng thay đổi thời điểm của phụ thuộc và thông báo. Hãy chọn theo thời điểm máy khách HTTP sử dụng cấu hình proxy của nó, thay vì mong thứ tự khai báo mang lại sự cô lập.

Bài viết liên quan