I want to be able to add some requires to a file I setup:

define daemontools::service(
  $ensure = 'running',
  case $ensure {
    'running': { $real_ensure = $source }
    'stopped': { $real_ensure = 'absent' }
    default: { fail("no such ensure for daemontools::service") }

    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

  require => [Package['djbdns'],Exec['tinydns_setup']]

The LanguageTutorial seems to think this will work, but it only results in the error message: Parameter 'require' is already set on File[/etc/service/tinydns] by daemontools::service


Get rid of the if $require -- it's completely unnecessary. Metaparameters like require apply to defined types just as well as they do to native types, so nothing in your daemontools::service resource will run until the requires on it are successfully run.

  • Doh, easier than I thought... – gnarf Sep 20 '09 at 2:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.