Hi Alexander,
See my inline comments, should help you with your dependency issues. I
CC''d
the puppet-users list so others can benefit from the clarification and
comment on the approach.
Cheers,
Teyo
On Fri, Jan 23, 2009 at 12:16 PM, Andrew Shafer
<andrew@reductivelabs.com>wrote:
>
> Any way to do what Alexander wants to?
>
>
> ---------- Forwarded message ----------
> From: Alexander Pankratov <apankratov@iponweb.net>
> Date: Fri, Jan 23, 2009 at 8:59 AM
> Subject: Puppet classes dependencies question
> To: andrew@reductivelabs.com
>
>
> Hi.
>
> Andrew, my name is Alexander Pankratov, I''m working for AppNexus
and have a
> question about class dependencies.
>
> I''ve searched puppet docs and google group, but didn''t
find appropriate
> solution. I can perfectly define dependencies within resources, but
I''d like
> to know if there is any way to do this on higher level.
>
> The problem I''m trying to solve is like this:
>
> - I''ve created several modules, let''s say 2: yum and
physical-server.
> - in yum module I configure yum repositories
> - in physical-server module classes I configure the box and use plenty
> (~200) of package { provider => yum } resources.
>
> Then, I include both classes in site.pp like
>
> class server-type-b {
> include yum
> include physical-server
> }
>
> I want to be sure that before packages in physical-server are being
> installed - yum repo is configured.
>
> Ofc, I can do this on per-resource basis. I.e. in each package {} in
> physical-server explicitly require yum class like:
>
> require => Class ["yum"]
>
> There is currently no mechanism for setting metaparameters is on with in a
> class. They can only be set inside a resource, but there are a couple of
> other ways to express this dependency without setting the require =>
> Class["foo"] in the resource.
>
Resource Defaults approach: Set a meta-parameter for all packages inside of
the physical-server class
class physical-server {
Package { require => Class["yum"] }
#
# All package resource in the class physical-server require yum. This can
be overidden on a per-resource basis within the class or subclass.
#
}
Relationship inversion: Set the meta-parameter within the file resource that
sets up the metaparameter.
class yum {
file {''/etc/yum.repo.d/myrepo.conf'':
before => Class["physical-server]
#
# Ensures that the yum repo is configured before any of the resource
contain in the physical-server class.
# Note you can''t overide the dependency per-resource within class
resource.
# So this is somewhat less flexible but it is explicitly a resource to
class level dependency.
#
}
>
> But is it possible to create requirements "tree" on per class
basis? Maybe
> inheritance will help (BTW, if I use "class A inherits B" does it
guarantee
> that B class resources will be processed before A class ones)?
>
Inheritence implies no order. So that won''t help here.
>
>
> Maybe there is some kind of wildcards so I can use "before =>
EVERYTHING"
> in yum module resources as the number of the latter is much lower.
>
again before => Class[''physical-server] should do the trick. I
assume there
is some ordering to the yum work within the class itself. Just put the
relationship in the last resource that completes your yum configuration.
>
>
> To summarize: I''d like to know is there any way to define
dependencies not
> in each resource definition, but rather for resources collection. Any
advice
> will be highly appreciated.
>
> Thanks in advance.
>
> --
> Alexander Pankratov
>
>
--
Teyo Tyree :: www.reductivelabs.com :: +1.615.275.5066
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com
To unsubscribe from this group, send email to
puppet-users+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en
-~----------~----~----~----~------~----~------~--~---