Ich habe ein Problem mit Puppetdb und meine strukturierten Fakten (Hashes).puppetdb stringify strukturierte Fakten wie Hashes
Hashes wird durch meine puppetdb stringifiziert.
Ubuntu 14.04
puppetserver = 3.8.7
facter = 2.4.4
puppetdb = 2.3.8-1
In meinem puppet.conf auf dem Clients und Server i gehört:
stringify_facts = false
In meinem site.pp habe ich Eintrag folgenden:
if is_hash($::os) {
notify {'hash':}
notify {$os['family']:}
}
if is_string($::os) {
notify {'string':}
notify {$os['family']:}
}
Wenn in meiner Puppe. conf auf dem Server:
storeconfigs = true
storeconfigs_backend = puppetdb
und t er puppetdb läuft.
erhalte ich die folgende Meldung auf dem puppetrun Auftraggeber:
os is not a hash or Array when accesssing it with family.
Wenn ich meine site.pp geändert nur:
if is_string($::os) {
notify {'os is a string':}
}
Dann bekomme ich die Meldung -> ‚o ist eine Zeichenfolge '
Wenn ich ändern, um die puppet.conf auf meinem Server:
storeconfigs = false
storeconfigs_backend = puppetdb
dann ist alles in Ordnung. os Tatsache wird als Hash identifiziert.
Hat jemand eine Idee? Bitte helfen :) Taner
ich von 'is_hash' gehe davon aus, dass Sie mit' Puppet Labs-stdlib', richtig? Ich dachte, intrinsische Fakten seien im Allgemeinen keine Facetten mit Facter <3.0. Auch das hat wahrscheinlich keinen Effekt, aber warum wechselst du von os global ('$ :: os') zu os local (' $ os') in deiner 'site.pp'? –
Danke für die Antwort. – mobios
Danke für die Antwort Matt. $ :: os und $ os ist in meinem Manifest dieselbe Toplevel-Variable os. Ich habe keine Localscope-Variablen in diesem Beispiel. Ja, du bist richtig, die Methode "is_hash" stammt von puppetlabs-stdlib. Da facter 2.0 facter mit strukturierten Fakten umgehen kann, siehe https://docs.puppet.com/facter/2.2/fact_overview.html#writing-structured-facts. Und in meinem Problem, wenn ich die puppetdb deaktivieren, ist alles in Ordnung :(. Os wird als Hash identifiziert. – mobios