Marionette. Iteration über eine verschachtelte hash in ERB
Bin ich angefangen zu entwickeln, in puppet (ruby) und ich habe Folgendes problem.
Habe ich die aktuelle hash, dass ich Durchlaufen in einer template-Datei.
$database_profile_hash =
{
cpu => {
governor => ondemand
energy_perf_bias => powersave
}
sysctl => {
kernel.sched.min.granularity.ns => 10000000
kernel.sched.wakeup.granularity.ns => 15000000
kernel.msgmnb => 6
}
...
}
Und meinem aktuellen template ist die folgende:
<% @database_profile_array.each do |arrayValue| %>
[<%= arrayValue %>]
<% database_profile_hash[arrayValue].each do |key,value| %>
<%= key %> <%= value %>
<% end %>
<% end %>
Durchlaufen der array-ich bin versucht, ein array zu speichern, die erste Ebene Namen und verwenden Sie es dann zu iterieren der hash:
$database_profile_array = [cpu,sysctl,...]
Aber ich bin nicht in der Lage, damit es funktioniert und ich bin auf der Suche nach einem Ausgang wie diese:
[cpu]
governor=ondemand
energy_perf_bias=powersave
[sysctl]
vm.laptop_mode=5
vm.dirty_writeback_centisecs=1500
kernel.nmi_watchdog=0
Was mache ich falsch in der Vorlage? Es ist ein Weg, um pass wird der Inhalt der Variablen "arrayValue" zu iterieren der hash?
Vielen Dank im Voraus...
InformationsquelleAutor Daniel Cano | 2016-05-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein template sieht gut aus für die meisten Teil, aber paar Sachen hier. First off, können Sie nicht in der Lage sein, die Perioden der Nutzung für Ihren Variablennamen, aber noch wichtiger ist, vergessen Sie nicht, Kommas getrennte Schlüssel/Wert-Paare:
In Ihrer Vorlage, Sie vergessen das gleich Zeichen, und vielleicht möchten Sie auch weglassen neue-Zeile-Zeichen für jede iteration durch die Verwendung von
-%>
:Edit: OP, beachten Sie die Kommentare andere verlassen haben. Wenn die iteration die Reihenfolge spielt keine Rolle, Sie brauchen keine separaten array
$database_profile_array
Verweis auf die Tasten, vielmehr können Sie iterieren der hash direkt:Auch, die
-%>
erb Marionette trim-tag ist dokumentiert hier.RE-Antwort: Sie wollen zu erwähnen
-%>
ist, weil Puppet ERB trim-Modus ist-
. RE Kommentar: er kann auch automatisch generieren, das array mitkeys
auspuppetlabs-stdlib
.Sehr guter Punkt, bearbeitet meine Antwort auf Ihre Spitze. Danke!
ja, er erzeugen kann, die das array von Tasten über die stdlib ist
keys()
Funktion. Das könnte nützlich sein, wenn er wollte, manchmal, wählerisch zu sein, und manchmal ist all-inclusive. Wenn er will immer zu sein, all-inclusive, aber dann ist es besser, um loszuwerden, das array insgesamt.ja, ich weiß, und er weiß wahrscheinlich auch, aber habe ich erwähnt, dass, im Falle er daran interessiert wäre, eine dynamische Methode für die Generierung der array wurde er manuell hardcoding, so weiß er, dass die Möglichkeit besteht, für die Zukunft
InformationsquelleAutor drewyupdrew