On 11/20/2012 10:15 PM, Laurence Cope wrote:
Hi

I am trying to install a yum repo using puppet, so they can install a
package. But i am struggling. I cannot find much help online at all.

The only code I got working was as follows, but it works first time, but
additional times it gives an error due to it being installed. Does it
matter I get Resource failed messages due to it being installed, or is
there a check to see if its installed, or am I using the wrong code? All
other code I found online gavce errors and does not even create it.

Thanks

    class yum
    {
    define packages::repo_release ($source) {
            exec { $name:
                    command =>"/bin/rpm -ivh ${source}",
                    creates => "/etc/yum.repos.d/${name}.repo",
            }
    }

    packages::repo_release { "virtualmin":
            source =>
    
"http://software.virtualmin.com/bleed/centos/5/i386/virtualmin-bleed-release-1.0-1.rhel.noarch.rpm";,
    }
    }

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

--
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+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to