Chef remote_file устанавливает максимальное количество перенаправлений на ноль - PullRequest
0 голосов
/ 12 января 2019

Я пытался реализовать приведенную ниже команду загрузки wget, используя ресурс chef remote_file. Но я не мог найти способ избежать перенаправления.

wget -N --max-redirect=0 http://www.someurl.com/file.zip

Флаг - max-redirect = 0 в wget обеспечивает отсутствие перенаправления.

URL-адрес для загрузки иногда перенаправляется на страницу напоминания о счете поставщика услуг Интернета. А ресурс chef remote_file загружает эту html-страницу напоминания о счетах в виде zip-файла.

Я могу просто добавить команду к ресурсу execute, обернув его внутри. Или реализуйте это, используя ruby-block с open-uri / net-http.

command "wget -N --max-redirect=0 http://www.someurl.com/file.zip"

Но есть ли реализация, подобная Chef, для установки перенаправления на ноль или ложь?

Блок ресурсов моего рецепта шеф-повара:

remote_file "#{node['download-zip-path']}/#{zip}" do
    source "http://www.someurl.com/#{zip}"
    action :create
    notifies :run, 'execute[unzip_file]', :delayed
end

1 Ответ

0 голосов
/ 18 января 2019

Обнаружено, что ресурс remote_file не может обрабатывать перенаправления. Поэтому мне пришлось написать ресурс ruby_block, который использует гем 'Down'.

ruby_block 'download_openvpn_zip' do
    block do 
        attempt = 2
        begin
            retries ||= 0
            tempfile = Down::NetHttp.download("http://www.someurl.com/#{zip},max_redirects: 0)
            FileUtils.mv tempfile.path, "#{node['openvpn-conf-path']}/#{tempfile.original_filename}"
        rescue Down::TooManyRedirects => e
            puts "\n \t ERROR: #{e.message}"
            retry if (retries += 1) < 1
        end 
    end
    action :run
    notifies :run, 'execute[unzip_file]', :delayed
end
...