Puppet : Convertir une chaîne en nombre

Puppet permet de convertir une chaîne en nombre de plusieurs façons.

Implicitement :

# cat test.pp
$nombre = '8080'
$type = type($nombre)
notify { "Type: ${type}": }
# puppet apply --verbose test.pp
Notice: Type: Integer[8080, 8080]

Chose qui ne fonctionne pas toujours, notamment avec Hiera :

# cat /etc/puppetlabs/code/environments/production/hieradata/common.yaml 
foo::port: '8080'
# cat test.pp
class foo(Any $port) {
    $type = type($port)
    notify { "Type: ${type}": }
}
include foo
# puppet apply --verbose test.pp
Notice: Type: String

On peut cependant lui forcer la main en ajoutant 0 – méthode que l’on peut retrouver dans la documentation officielle :

# cat test.pp
class foo(Any $port) {
    $port_int = 0 + $port
    $type = type($port_int)
    notify { "Type: ${type}": }
}
include foo
# puppet apply --verbose test.pp
Notice: Type: Integer[8080, 8080]

Procéder de la sorte génère le warning suivant depuis Puppet 4.10.2 :

Warning: The string '8080' was automatically coerced to the numerical value 8080

En mode strict, Puppet va même transformer cela en erreur.

La seule et unique méthode désormais est d’utiliser Numeric (apparu avec Puppet 4.1), Integer ou Float :

# cat test.pp 
class foo(Any $port) {
    $port_int = Numeric($port)
    $type = type($port_int)
    notify { "Type: ${type}": }
}
include foo
# puppet apply --verbose test.pp
Notice: Type: Integer[8080, 8080]

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s