تنظیمات پروکسی 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: روبی سطح بالا مقدار را ذخیره میکند، پروکسی موقت را تنظیم میکند،
remote_fileرا اعلام میکند و مقدار را بازمیگرداند. - Converge: منبع عمل خود را با پیکربندی موجود در آن زمان انجام میدهد.
یک پروکسی پایدار کلاینت با استثناهای داخلی مناسب از این مشکل زمانبندی جلوگیری میکند. از نحو استثنای مستند کلاینت نصبشده استفاده کنید، نه از فرض قواعد wildcard پوسته. برای بارگیری مستقل یک مصنوع عمومی در مسیری عمومی مجاز، یک ورودی از فهرست پروکسی HTTP میتواند نقطه پایانی HTTP پایدار را فراهم کند هنگامی که کلاینت Chef حساب پروکسی پیکربندیشده یا نگهداشتهشده ندارد. استثناهای داخلی آن را حفظ کنید؛ انتخاب یک نشانی تغییر نمیدهد که compile و converge چه زمانی آن را مصرف میکنند.
اگر یک عملیات به مسیر ویژهای نیاز دارد، تغییر پیکربندی و اجرای آن را در یک محدوده بگذارید. یک منبع سفارشی با رفتار مناسب unified-mode یک گزینه است، اما Chef::Config سراسری میماند. آن را هنگامی که بارگیری شکست میخورد و هنگامی که پرونده از قبل بهروز است بازگردانید. اعلان بهروزرسانی بیقید اجرا نمیشود، و یک منبع پاکسازی بعدی ممکن است پس از یک استثنا هرگز اجرا نشود.
ویژگی lazy source ارزیابی همان ویژگی را به تأخیر میاندازد، نه انتسابهای روبی پیرامون آن را. اجرای منبع در زمان compile یک گزینه پشتیبانیشده جداگانه است هنگامی که بارگیری به همان زمان تعلق دارد؛ زمانبندی وابستگیها و اعلانها را نیز تغییر میدهد. بر پایه اینکه کلاینت HTTP چه زمانی تنظیم پروکسی خود را مصرف میکند انتخاب کنید، نه با انتظار اینکه ترتیب اعلان ایزولاسیون بدهد.