Chef remote_file将重定向的最大数量设置为零

时间:2019-01-11 21:56:54

标签: chef chef-recipe chef-solo

我一直在尝试使用Chef remote_file资源实现以下wget下载命令。但是我找不到避免重定向的方法。

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

wget中的-max-redirect = 0 标志可确保没有任何重定向。

有时会将下载URL重定向到ISP账单提醒页面。厨师remote_file资源将这个账单提醒html页面下载为zip文件。

我可以通过将命令包装在其中来将命令添加到执行资源中。或使用带有open-uri / net-http的ruby-block来实现。

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

但是有没有类似Chef的实现将重定向设置为零或false?

我的厨师食谱资源块是

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 :(得分:0)

发现remote_file资源无法处理重定向。因此,我不得不编写一个利用'Down'gem的ruby_block资源。

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