パペットクラスでは、変数が設定されているかどうかをどのようにテストすればよいですか?現在、変数が未定義かどうかを確認しています:
if $http_port != undef {
$run_command = "$run_command --http-port $http_port"
}
変数が宣言されているかどうかを確認するより良い方法はありますか?
変数がundefかどうかをテストしている場合は、正しい方法です。書き込み
if $http_port {
$run_command = "$run_command --http-port $http_port"
}
ほぼ同じことを達成します。 $ http_portがundefまたはfalseの場合、コマンドは実行されません。
Varが定義されているかどうかをテストする場合は、次のようにする必要があります。
if defined('$http_port') {
$run_command = "$run_command --http-port $http_port"
}
https://docs.puppet.com/puppet/4.10/function.html#defined を参照してください。
Varがクラス変数の場合、次のようなことができます。
class your_class (
Optional[Integer[0, 65535]] $http_port = undef,
) {
if $http_port {
notify { "got here with http_port=${http_port}": }
}
}
次に、クラスがhttp_portを0〜65535の整数として設定して宣言されている場合にのみ、通知を実行します。