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: рэсурс выконвае сваё дзеянне з канфігурацыяй, даступнай на той момант.

Стабільны кліенцкі проксі з належнымі ўнутранымі выключэннямі пазбягае гэтай праблемы часу. Карыстайцеся дакументаваным сінтаксісам выключэнняў усталяванага кліента, а не здагадкамі пра правілы shell wildcard. Для самастойнага спампоўвання публічнага артэфакта па дазволеным публічным маршруце запіс са спісу HTTP-проксі можа даць стабільны HTTP-эндпойнт, калі ў кліента Chef няма наладжанага або захаванага ўліковага запісу проксі. Захоўвайце яго ўнутраныя выключэнні; выбар адраса не змяняе таго, калі compile і converge яго спажываюць.

Калі адна аперацыя патрабуе асаблівага маршруту, трымайце змену яе канфігурацыі і выкананне ў адной вобласці бачнасці. Уласны рэсурс з належнымі паводзінамі unified-mode — адзін з варыянтаў, але Chef::Config застаецца глабальным. Аднаўляйце яго, калі спампоўванне не ўдалося і калі файл ужо актуальны. Апавяшчэнне аб абнаўленні не запускаецца безумоўна, а наступны рэсурс ачысткі можа ніколі не запусціцца пасля выключэння.

Уласцівасць lazy source затрымлівае вылічэнне гэтай уласцівасці, а не навакольныя прысваенні Ruby. Выкананне рэсурсу падчас compile — асобны падтрыманы варыянт, калі спампоўванне менавіта тады і патрэбна; ён таксама змяняе час залежнасцей і апавяшчэнняў. Выбірайце з улікам таго, калі HTTP-кліент спажывае наладу проксі, а не спадзявайцеся, што парадак аб’яў дасць ізаляцыю.

Падобныя артыкулы