Das Puppenpaket "Sicherstellen => Neueste" funktioniert nicht immer

7

Ich habe eine einzigartige Situation, in der die Puppet- ensure => latestPaketanweisung nur auf einigen meiner Systeme funktioniert hat. Von 30 Servern wurden die Pakete auf allen außer 4 ordnungsgemäß aktualisiert. Ich versuche, Hauptversionen der Software-Suite von <9,40 auf 9,50 zu erhalten. Ich könnte eine harte Ebene angeben, aber ich würde auf das Platzhalterproblem mit mehreren Architekturen stoßen .

Manifest-Code-Snippet:

# Install packages
$spppackages = [ "hp-snmp-agents", "hpssa", "hp-health", "hp-smh-templates", "hpsmh", "hpssacli", "hponcfg", ]

package { $spppackages:
  ensure  => latest,
  require => Yumrepo['HP-spp'],
}

Mcollective Status:

mco package hp-snmp-agents status

Summary of Ensure:

   9.50-2564.40.rhel6 = 14
   9.50-2564.34.rhel5 = 9
   9.40-2506.37.rhel6 = 4 <== This is what I'm trying to fix!
   9.50-2564.35.rhel5 = 1

Ich habe versucht, dies auf den betroffenen Systemen zu debuggen mit:

puppet apply --verbose --debug --execute 'package { hp-snmp-agents: ensure => latest }'

Ergebend:

Info: Applying configuration version '1393411670'
Debug: Prefetching yum resources for package
Debug: Executing '/bin/rpm --version'
Debug: Executing '/bin/rpm -qa --nosignature --nodigest --qf '%{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH} :DESC: %{SUMMARY}\n''
Error: Could not prefetch package provider 'yum': invalid byte sequence in US-ASCII
Debug: Executing '/bin/rpm -q hp-snmp-agents --nosignature --nodigest --qf '%{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH} :DESC: %{SUMMARY}\n''
Debug: Finishing transaction 11762680
Debug: Storing state
Debug: Stored state in 0.09 seconds

Das Ausführen yum list updates hp-snmp-agentszeigt, dass das Paket von yum aktualisiert werden kann und eine neuere Version verfügbar ist:

Installed Packages
hp-snmp-agents.x86_64                                   9.40-2506.37.rhel6                                   @HP-spp
Available Packages
hp-snmp-agents.x86_64                                   9.50-2564.40.rhel6                                   HP-spp 

Es scheint, dass das Problem möglicherweise das Abfrageformat der RPM-Version sein könnte. Wenn Sie das von Hand ausführen, erhalten Sie:

# /bin/rpm -q hp-snmp-agents --nosignature --nodigest --qf '%{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH} :DESC: %{SUMMARY}\n'
hp-snmp-agents 0 9.40 2506.37.rhel6 x86_64 :DESC: Insight Management Agents(SNMP) for HP ProLiant Systems

Wenn ich ensure => 9.50-xxxauf dem hp-snmp-agentsPaket bin, kann ich dies zwingen, auf den hartnäckigen Systemen zu arbeiten. Selbst die Eingabe einer gefälschten Versionsnummer scheint den Katalogaufbau zu beschleunigen, und nachfolgende Läufe des Puppet-Agenten funktionieren und werden ordnungsgemäß aktualisiert. Ich bin nur neugierig, warum dies auf 26 von 30 Servern nahtlos funktionierte und auf dem Rest massiert werden musste.

Beachten Sie, dass ich dies yum clean allals ersten Schritt zur Fehlerbehebung über Mcollective getan habe

ewwhite
quelle

Antworten:

4

Ich glaube, das relevante Problem ist folgendes:

Debug: Executing '/bin/rpm -qa --nosignature --nodigest --qf '%{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH} :DESC: %{SUMMARY}\n''
Error: Could not prefetch package provider 'yum': invalid byte sequence in US-ASCII

Worüber in diesem Fehler gesprochen wird: https://tickets.puppetlabs.com/browse/PUP-736

Grundsätzlich erhalten Sie irgendwo in dieser rpm -qa ...Ausgabe einen UTF-8-Charakter (oder einen anderen Nicht-ASCII-Charakter), und das lässt die Puppe denken, dass der "yum" -Anbieter nicht gut ist. Da der Fallback-Anbieter "rpm" keine ensure => latestUnterstützung hat, ignoriert er dies und Sie erhalten die alte Version.

Sie können entweder auf Puppet 3.4.3 aktualisieren, das einen Fix enthält, oder die /bin/rpm -qa ... | sortAusgabe zwischen Boxen vergleichen , die richtig funktionierten und nicht richtig funktionierten, um das Täterpaket zu finden. Ein Wechsel von LANG = C zu LANG = en_US.UTF-8 (oder einem anderen gültigen UTF-8-LANG) sollte das Problem ebenfalls vorübergehend beheben.

freiheit
quelle
Ich vermutete, dass etwas in der Paketliste das Problem war ... Aber wenn man genauer hinschaut, ist es eine Kombination aus Puppet-Versionen und dem oben genannten Codierungsproblem. Server mit pe-puppet-enterprise-release-3.0.1-1.pe.el6.noarchaktualisierter Geldstrafe, unabhängig von der Einstellung der LANG-Codierung. Server mit pe-puppet-enterprise-release-3.1.0-0.pe.el6.noarchausgefallen, es sei denn, die LANG wurde eingestellt en_US.UTF.
ewwhite