Hello,

I fear that I have done something stupid in my manifests that requires
a redesign. To take an example:

I have the global statement:
Package {
  ensure  => latest,
  require => Class['repositories'],
}

I then have a repositories module with init.pp containing:
class repositories {
  case $operatingsystem {
    debian: {
      include repositories::debian
    }
    fedora: {
      include repositories::fedora
    }
    default: {
      fail "Unsupported OS $operatingsystem'"
    }
  }
}

Unfortunately I was hoping that an include here would act like a
requirement, however it does not. The contents of debian.pp/fedora.pp
get evaluated at an arbitrary later point causing interesting issues
when first installing a system. Puppet attempts to install some
packages before the repositories have been configured.

Is there any way for a class to depend on another class or for the
include statement to act more like a require?

In this example it would be trivial to change the global statement to
directly require the operating system's repositories subclass.
Unfortunately I have used this paradigm in multiple locations, some
where the alternative may not be as obvious or would increase the
verbosity of the including classes.

Thank you for any pointers,

Dan

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-us...@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to