Шеф-повар 10: Как использовать remote_file или аналогичный для получения файла из общей папки Windows?

Я пытаюсь использовать remote_file для кэширования локальной копии большого пакета в общей папке Windows. Как это делается?

Я не могу заставить его работать с путем на основе буквы диска, путем на основе UNC или URL-адресом file:.


person L2G    schedule 19.01.2013    source источник


Ответы (2)


У меня нет окон для тестирования, но что-то вроде этого должно работать:

require 'fileutils'
remote_path = '...'
local_path = '...'

ruby "cache-#{remote_path}" do
    block  { FileUtils.copy_file(remote_path, local_path) }       
    not_if { File.exists?(local_path) }
end
person valodzka    schedule 19.01.2013

Я разработал трюк, который я считаю довольно изящным. Я создал следующее определение (и поместил его в definitions/default.rb):

define :file_from_network, :action => :create do
   myPath = (params[:path] || params[:name])
   mySource = params[:source]

   if File.exist?(mySource)
      file myPath do
         action params[:action]
         content File.open(mySource) {|io| io.read}
      end
   else
      Chef::Log.error("File #{mySource} not found!")
   end
end

Определения работают не так, как ресурсы, но это было легко реализовать, и оно делает то, что мне нужно. Чтение в памяти, конечно, делает его непрактичным для больших файлов, но позволяет Chef проверить, отличается ли содержимое, прежде чем инициировать действие над файловым ресурсом.

person L2G    schedule 04.02.2013