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 => "", } } Is this possible with 0.25 (we''re installing from Epel and we''re nowhere near ready to upgrade to 2.6!)? How are other people managing this kind of situation? Cheers, M. -- 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.
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-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.
A less elegant way, but an alternative is to simply have a *.repo file per use case (if you don''t have too many) and simply include that file in the class or node that needs it. On Dec 21, 4:07 am, Felix Frank <felix.fr...@alumni.tu-berlin.de> wrote:> 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-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.