我正在使用自定义 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}": }
}