web-dev-qa-db-fra.com

Puppet comment savoir si une variable est définie

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?

5
Alex Cohen

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.

7
user1571135