Dans une classe de marionnettes, comment dois-je tester si une variable a été définie ou non? En ce moment, je vérifie simplement si une variable n'est pas définie:
if $http_port != undef {
$run_command = "$run_command --http-port $http_port"
}
Existe-t-il un meilleur moyen de vérifier si une variable a été déclarée ou non?
Si vous testez si une variable n'est pas définie, votre méthode est correcte. L'écriture
if $http_port {
$run_command = "$run_command --http-port $http_port"
}
accomplirait presque la même chose. Si $ http_port est indéfini ou faux, il n'exécutera pas la commande.
Si vous voulez tester si la var a été définie, vous devez faire:
if defined('$http_port') {
$run_command = "$run_command --http-port $http_port"
}
Voir https://docs.puppet.com/puppet/4.10/function.html#defined .
Si le var est une variable de classe, vous pouvez faire quelque chose comme:
class your_class (
Optional[Integer[0, 65535]] $http_port = undef,
) {
if $http_port {
notify { "got here with http_port=${http_port}": }
}
}
Il n'exécutera alors la notification que si la classe est déclarée avec http_port défini comme un entier compris entre 0 et 65535.