Puppet, Arrays & Iteratoren
Posted on July 18, 2013 (Last modified on March 9, 2022) • 1 min read • 194 wordsEndlich, endlich, endlich kommt in Puppet 3.2 die Möglichkeit, Schleifen zu bauen. Dann könnte ich eventuell folgende Aufgabenstellung ein klein wenig einfacher realisieren (aktuell arbeite ich bis zur endgültigen Umstellung unserer Systeme mit Puppet 2.7):
Das Herausfinden der Blockdevices erledigt ein Fact aus Facter … naja, nicht ganz - ein in Facter 2.0 verfügbarer Fact, den ma aber dankenswerterweise zurückportieren kann. Dieser liefert uns $blockdevices - eine Komma-getrennte Liste der gefundenen devices, allerdings ohne “/dev/”, also nur “sda,sdb,sdc”.
Das hinzufügen, und dann … ja, was dann? In Ruby kein Thema, aber jetzt möchte ich von “sda,sdb,sdc” zu ["/dev/sda", “/dev/sdb”, “/dev/sdc”].
Und das geht so:
# next line broken up for readability
$devices_tmp = inline_template( '
<%= devs=scope.lookupvar("::blockdevices")
.split(",")
.select{|f| ! f.include? "sda" }
.select{|f| f.include? "sd" }
.collect{|f| "/dev/" + f}.join "," %>' )
# here we split the string back to an array.
$devices_wanted = split($devices_tmp, ",")
# but it works.
# isn't life shit?
notify { $devices_wanted : }</span>
Schön ist anders. Falls jemand eine bessere Idee hat - immer her damit …