我正在使用自定义ENC,并且希望能够将类默认参数放到范围更高的变量中。
这允许我在顶部作用域,节点作用域,包装类作用域等中设置一个变量,该值将被选为一个类的默认参数。
然后,我还可以在类定义中设置参数。这种方法的一个缺点是,一个类可能会发现“不安全”的默认值,尽管我认为这是不太可能的情况。
有没有其他人在解决这样的问题,这总体上是一个好主意还是一个坏主意?
custom_enc.yaml
classes:
rsyslog::client:
port: 1234
parameters:
server: my-rsyslog-server
清单/ server.pp
class rsyslog::client(
$server => $server, # $server = $server || undef
$port => $port ? { # $port = $port || '514'
'' => '514',
default => $port
}
) {
if !defined($server) { fail "server must be defined" }
notify { "The server is ${server}": }
notify { "The port is ${port}": }
}