Я хочу иметь возможность добавлять некоторые требования к настраиваемому файлу:
define daemontools::service(
$ensure = 'running',
$source
){
case $ensure {
'running': { $real_ensure = $source }
'stopped': { $real_ensure = 'absent' }
default: { fail("no such ensure for daemontools::service") }
}
file{"/etc/service/${name}":
ensure => $real_ensure,
require=> Package['daemontools']
}
# This is the part that gets confusing
if $require {
File["/etc/service/${name}"]{ require +> $require }
}
}
# in some other class somewhere
daemontools::service{"tinydns":
source=>'/var/tinydns',
require => [Package['djbdns'],Exec['tinydns_setup']]
}
В LanguageTutorial кажется, что это сработает, но это приводит только к сообщению об ошибке: Parameter 'require' is already set on File[/etc/service/tinydns] by daemontools::service
Избавьтесь от if $require
- это совершенно не нужно. Метапараметры, такие как require, применяются к определенным типам так же хорошо, как и к собственным типам, поэтому ничего в вашем daemontools::service
ресурс будет работать до тех пор, пока требования к нему не будут успешно выполнены.