On Nov 30, 2010, at 7:03 AM, Daniel Piddock wrote:

> 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,

I think this will work, but I don't have a machine to test the syntax on right 
now:

include repositories
Package {
 ensure  => latest,
 require => Class['repositories'],
}



class repositories {

 case $operatingsystem {
   debian: {
     $repositoryclass
   }
   fedora: {
     $repositoryclass
   }
   default: {
     fail "Unsupported OS $operatingsystem'"
   }
 }

 require( Class[ $repositoryclass ] )

}

-- 
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