2016-12-01 2 views
0

Ich habe Probleme mit der Installation von Paketen in Form von lokal heruntergeladene RPM-Datei - nur auf Oracle Linux (OEL). Gibt es einen Fehler? Hat das jemand beobachtet? Es wäre ein großer Fehler, also bin ich etwas überrascht.Chef Problem mit lokalen RPM-Paket-Installation auf Oracle Linux (Oel)

Chef Rezept ist ganz einfach:

pkg_src_location = 'https://s3.amazonaws.com/solution-automation-folder/qualys' 
pkg = 'qualys-cloud-agent.x86_64.rpm' 
local_image = "#{Chef::Config['file_cache_path']}/#{pkg}" 

remote_file 'qualys-cloud-agent-image' do 
    path local_image 
    source "#{pkg_src_location}/#{pkg}" 
end 

package 'qualys-cloud-agent' do 
    source local_image 
end 

Aus https://github.com/r2oro/oel_pkg_test.git verfügbar ist.

Ich habe beobachtet, dass auf Oracle Linux (OEL) mit folgendem Python-Skript führt ausgelöst wird:

/usr/bin/python /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/provider/package/yum/yum-dump.py --options --installed-provides --yum-lock-timeout 30 

Es läuft eine ganze Weile (mehrere hundert Megabyte an Daten herunterzuladen - so weit ich sehen kann - yum Repo-Metadaten) und scheitert schließlich (Küche im Debug-Modus speichert alles auf stdout ...). Auf jeden Fall ist das Ergebnis:

 * yum_package[qualys-cloud-agent] action install[2016-12-01T12:35:32+00:00] ERROR: /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/provider/package/yum/yum-dump.py exceeded timeout 900 


     ================================================================================ 
     Error executing action `install` on resource 'yum_package[qualys-cloud-agent]' 
     ================================================================================ 

     Mixlib::ShellOut::CommandTimeout 
     -------------------------------- 
     Command timed out after 900s: 
     Command exceeded allowed execution time, process terminated 
     ---- Begin output of /usr/bin/python /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/provider/package/yum/yum-dump.py --options --installed-provides --yum-lock-timeout 30 ---- 
     STDOUT: 
     STDERR: 
     ---- End output of /usr/bin/python /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/provider/package/yum/yum-dump.py --options --installed-provides --yum-lock-timeout 30 ---- 
     Ran /usr/bin/python /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/provider/package/yum/yum-dump.py --options --installed-provides --yum-lock-timeout 30 returned 

     Resource Declaration: 
     --------------------- 
     # In /tmp/kitchen/cache/cookbooks/oel_pkg_test/recipes/default.rb 

     16: package 'qualys-cloud-agent' do 
     17: source local_image 
     18: end 

     Compiled Resource: 
     ------------------ 
     # Declared in /tmp/kitchen/cache/cookbooks/oel_pkg_test/recipes/default.rb:16:in `from_file' 

     yum_package("qualys-cloud-agent") do 
     package_name "qualys-cloud-agent" 
     action [:install] 
     retries 0 
     retry_delay 2 
     default_guard_interpreter :default 
     declared_type :package 
     cookbook_name "oel_pkg_test" 
     recipe_name "default" 
     source "/tmp/kitchen/cache/qualys-cloud-agent.x86_64.rpm" 
     flush_cache {:before=>false, :after=>false} 
     end 

Haben Sie beachten Sie, dass yum flush_cache sollte nicht passieren, aber es tut immer noch? Es ist frustrierend. Diese immer scheitert so in meiner lokalen Küche (mit Vagrant/Virtualbox) oder sogar in AWS Cloud Küche ... Real Instanzen manchmal scheitern manchmal konvergieren ... Aber es ist eine Lotterie. Wie auch immer, warum dieses Cache-Update überhaupt für ein einzelnes lokales rpm-Image passiert !?

Ich versuche rpm_package zu verwenden, aber dies führt zu Problemen mit yum_package Wesen in anderen Rezepten ...

Irgendwelche Gedanken?

Antwort

1

Wahrscheinlich möchten Sie in diesem Fall rpm_package verwenden, aber warum der Cache neu geladen wird, ist es vielleicht das erste Mal, dass er getroffen wird und das erste Neuladen durchführen muss, oder nach etwas anderem das Paketset.

+0

Ich versuchte rpm_package zu verwenden, aber (wie oben erwähnt) mit einigen anderen Rezepten zu einem Konflikt führen, die yum_package verwendet, konnten sie mit Fehlermeldung folgenden: „yum-Dump Allgemeinen Fehler: rpmdb unter uns verändert“. Eigentlich passiert dieser Yum-Dump auch auf Centos ... aber es produziert nicht so viele Daten ... – r2oro

+0

Es hört sich so an, als ob dein Paket etwas Wackeliges an der RPM-Datenbank macht, das yum nicht mag. Funktioniert das alles von Hand? – coderanger

+0

Ja, sicher, das RPM-Paket ist in Ordnung. Allerdings mache ich mir wirklich Sorgen über das Verhalten von yum_package. Es wird ausgelöst, dass yum-dump.py nach Repometadaten fragt, die überhaupt nicht benötigt werden (für lokale RPM-Installation). Tatsächlich passiert es auch auf Knoten, deren Caches bereits aktualisiert wurden. Normalerweise wäre das kein Problem, aber bei OEL ist es so, da yum-dump.py wirklich riesig ist und die Dump irgendwann ausläuft. – r2oro