ich mit einer Logik, um einen Koch Ressource schreibe wie mit jeder genannten SchritteChef - Laden Sie mehrere Zip-Dateien von der Website (HTTP) und haben einige grundlegende Operationen
- Suche nach einem ‚zip‘ Inhalt von der Website http und laden sie es
- nach dem Entpacken der Dateien herunterzuladen und setzt es unter einem Verzeichnis - für zB/u01/var/
- Jetzt kommt der schwierige Teil - für jede heruntergeladene ZIP-Datei muss ich durch jede Datei zu durchqueren und zu tun die gleiche Operation, die für verschiedene Zip-Dateien gilt
My-Code -
require 'open-uri'
links = open(patch_depot ,&:read).to_s
out1=links.scan(/\s*\s*"([^"]*zip)"/imu).flatten
patch_files = out1.select{ |i| i[/\.zip$/]}
print patch_files
unless patch_files.length>=1
Chef::Log.info('No latest file found..!!')
else
c = Dir.pwd
Dir.chdir(cache_direc)
patch_files.each do |patch|
if ::File.exist?(::File.join(cache_direc,patch))
Chef::Log.info("#{patch} file is already downloaded")
else
open(patch, 'wb') do |fo|
fo.print open("#{patch_depot}/#{patch}").read
end
`unzip -qo #{patch}`
Chef::Log.info("#{patch} is downloaded and extracted")
FileUtils.chown_R osuser, usergroup, cache_direc
FileUtils.chmod_R 0777, cache_direc
end
Also mit dem Code oben i bin in der Lage erwähnten Punkt 1 und Punkt 2
Nach diesem Codeblock i einen Rubin Block haben zu erreichen, die eine Datei aktualisiert und i habe einen bash block, der eine Operation ausführt.
unten wie -
ruby_block 'edit bsu.sh file' do
block do
bsu_sh_file = Chef::Util::FileEdit.new("#{bsu_loc}/utils/asu/mmy.sh")
bsu_sh_file.search_file_replace_line(/^MEM_ARGS="-Xms256m -Xmx512m"*$/, "MEM_ARGS='-Xms1024m -Xmx1024m'")
if bsu_sh_file.unwritten_changes? == false
Chef::Log.info('No Changes need be made to mmy_sh_file')
else
bsu_sh_file.write_file
Chef::Log.info('Changes made in mmy_sh_file file')
end
end
end
bash blockieren -
bash "test bash" do
action:run
code <<-EOH
some operation
EOH
end
Mein HTTP-Content mehr Zip-Dateien für jede Zip-Datei So kann ich muß erwähnt auf ruby_block die Operationen entpacken und zu tun und bash block
Bitte geben Sie eine Lösung oder einen Vorschlag
EDIT # 1: Der Code geschrieben, die bereits eine benutzerdefinierte Ressource ist, weiß ich, ich versauen mit der Schleife einige wo. Mein Code bewegt sich nicht innerhalb der Schleife und durchläuft die anderen Aktionen.
Es ist verwirrend zu wissen, warum du hier feststeckst. Also, warum können Sie nicht eine benutzerdefinierte Ressource dort aufrufen und in der Sie alle Dateien an der Stelle mit 'Dir 'erhalten und normalerweise iterieren und Ihre Ruby und Bash-Methoden anwenden. Ich habe wirklich keine Ahnung von Ihrer Sorge. –
Kennen Sie vorher die Adresse, von der Sie den 'zip' und den Namen der Datei (en) herunterladen möchten? Ich meine, wissen Sie vorher die komplette URL von wo die Datei heruntergeladen wird? – Navarro
@Navarro: Ja, ich kenne die URLs, wo genau die ZIP-Dateien ausgewählt werden, auch wenn ich die Liste der Zips wie unten bekomme ["1.zip, 2.zip, 3.zip"] Aber ich muss iterieren zuerst mit 1.zip dann entpacken und andere Aktionen ausführen, die ich nicht erreichen kann –