I have my own module for managing yum repos, and here is how it looks
like for example for EPEL repo:
# Class: yumreposd::epel
#
# This module manages EPEL repo files for $lsbdistrelease
#
class yumreposd::epel {
file { '/etc/yum.repos.d/epel.repo':
ensure => file,
mode => '0644',
owner => root,
group => root,
source =>
"puppet:///modules/yumreposd/${::operatingsystem}/${::operatingsystemrelease}/epel.repo",
require => [ Package['epel-release'], Class['yumreposd::base'] ],
}
# install package depending on major version
case $::operatingsystemrelease {
default: {}
/^5.*/: {
package { 'epel-release':
ensure => present,
provider => 'rpm',
source =>
'
http://mirror.bytemark.co.uk/fedora/epel/5/i386/epel-release-5-4.noarch.rpm
',
}
}
/^6.*/: {
package { 'epel-release':
ensure => present,
provider => 'rpm',
source =>
'
http://ftp-stud.hs-esslingen.de/pub/epel/6/i386/epel-release-6-7.noarch.rpm
',
}
}
}
}
Notice that I manage also files section, and distribute finished
epel.repo file.
And in the node manifest (or template that node inherits), I just do:
# yum repos
stage {'yumreposd': before => Stage['main'] }
class {'yumreposd': stage => 'yumreposd' }
class {'yumreposd::base': stage => 'yumreposd' }
class {'yumreposd::epel': stage => 'yumreposd' }
class {'yumreposd::srce': stage => 'yumreposd' }
class {'yumreposd::puppetlabs': stage => 'yumreposd' }
This ensures that all my repos are set up before any other class, so
that I don't have to maintain dependencies on repos.
If you wish I can tar the whole module and share it.
--
Jakov Sosic
www.srce.unizg.hr