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.