On 12/20/2010 07:26 PM, Matthew Macdonald-Wallace wrote:
> Hi all,
> 
> I'm wondering how other people mange yum repositories using the yumrepo
> type.
> 
> At the moment, we have a class called "repos" which has all of our repos
> defined in it.
> 
> This class is included in our 'base' class which sets up things common
> to all servers such as puppet, mcollective, nrpe etc.
> 
> The down side of this is that all of our repos are included on all of
> our servers, leading to a complete mess in /etc/yum.repos.d/
> 
> I'm now thinking that I need to only call in the various repos for the
> servers which require them, i.e. CentosBase and others would be included
> in the 'base' class, however those which provide things such as php 5.3
> would only be included on webservers etc.
> 
> What would be even nicer would be if there was a way to override certain
> aspects of existing repos, for example:
> 
> class base{
> # other yumrepo defines...
> ...
> ...
> 
> # stick with the php 5.1 in Centos Base
> yumrepo{"epel":
>         excludepkgs=>"php*",
> }
> 
> }
> 
> 
> class webserverphp52 {
> # include php5.2 from epel 
>         yumrepo{"epel":
>                 excludepkgs => "",
>         }
> }

Hi,

I'm not using yum, but this looks like a use case for either or both of
virtual resources and inheritance:

class yumrepos { # included by each and every node
  @yumrepo {
    "one": ...;
    "two": ...;
    ...
    "epel": excludepkgs=>"php*", ...;
  }
}

class base_repos { # also included by all (?)
  realize(Yumrepo["foo", "bar"])
}

class php_repos {  # only for those who want
  realize(Yumrepo["epel"])
}

class yumrepos_epel_enable_php inherits yumrepos {
  Yumrepo["epel"] { excludepkgs => "" }
}

So your webserver class will probably
include php_repos
include yumrepos_epel_enable_php
to get (in addition to the base repos) epel and include epel's PHP packages.

HTH,
Felix

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