Le piège à con du jour : entiers et booléens selon Puppet

December 21, 2012 by nono
Catégories geekeries - Mots-clés grmpf puppet

J'ai une config Puppet qui commence à devenir assez touffue. On y trouve entre autres un fait md_raid qui retourne le nombre de grappes RAID logicielles sur une machine Linux. Je peux donc utiliser le fait en question pour appliquer un bout de config uniquement sur les machines qui ont des grappes RAID, typiquement pour installer l'outil de surveillance qui va avec :

if $md_raid {
  # bla bla bla
}

Cool, hein ? Hé non ! Pourquoi pas ? Parce que pour Puppet, tous les entiers sont vrais, même 0.

La bonne solution se trouve du côté de l'excellent module stdlib, qui fournit entre autres une fonction num2bool qui renvoie vrai uniquement pour les nombres strictements positifs. Mon test devient du coup :

if num2bool($md_raid) {
  # bla bla bla
}

Cette fois, ça marche. :-)