On Jun 24, 2011, at 11:48 AM, James A. Peltier wrote:

> Hi All,
> 
> I'm new to puppet and I'm having some difficulty enabling and disabling yum 
> repositories on an as needed basis and I was wondering if you all might be 
> able to provide me with some assistance.  I've been able to get puppet to 
> configure a yum repository, I'm going to use EPEL as an example here but I'd 
> like it for all, by creating a class called epel.pp containing
> 
> class epel {
>  yumrepo { "epel": descr => "Extra Packages for Enterprise Linux \$releasever 
> - \$basearch", baseurl => 
> "http://mirror.its.sfu.ca/mirror/CentOS-Third-Party/epel/\$releasever/\$basearch";,
>  gpgcheck => 1, gpgkey => 
> "http://mirror.its.sfu.ca/mirror/CentOS-Third-Party/epel/RPM-GPG-KEY-EPEL";, 
> enabled=0 }
> }
> 
> and it does create and populate the /etc/yum.repos.d/epel.repo file with this 
> information.  Now I want to be able to install ganglia-gmond automatically 
> from this repository but I can't figure out how to enable and disable the 
> repo afterwards?  Can anyone please provide an example of how something like 
> this may be accomplished?
----
I've been at this for less than a week and primarily concentrating on ubuntu, 
not RHEL/CentOS so take this with a grain of salt

You have to be careful when installing packages from another repo but 
generally, you just keep the EPEL repo disabled and instead of using the 
built-in package command, you would want to 'exec' something like...

exec('/usr/bin/yum --enablerepo=epel install -y ganglia-gmond') and I would 
also note that you have to ensure that the rpm-gpg key is installed for the 
epel repo BEFORE that command is executed - I believe you already provided the 
gpg-key URL to us.

something like this should work (adapt for rpm/yum and note that rpm stores 
keys in /etc/pki/rpm-gpg)...

class apt {
  package { "apt":
    ensure => installed,  
    }
  file{"/etc/apt/sources.list":
    ensure  => present,
    owner   => root,
    group   => root,
    mode    => 0444,
    content => template("apt/sources.list.erb"),
    require => Package["apt"],
  }
  exec{"/usr/bin/apt-get update":
    refreshonly => true,
    subscribe   => File["/etc/apt/sources.list"],
    require     => File["/etc/apt/sources.list"],
  }
  # MongoDB Key
  apt::key { "7F0CEB10":
    keyid  => "7F0CEB10",
    ensure => present,
  }
}
define apt::key($keyid, $ensure, $keyserver = "keyserver.ubuntu.com") {
  case $ensure {
    present: {
      exec { "Import $keyid to apt keystore":
        path        => "/bin:/usr/bin",
        environment => "HOME=/root",
        command     => "gpg --keyserver $keyserver --recv-keys $keyid && gpg 
--export --armor $keyid | apt-key add -",
        user        => "root",
        group       => "root",
        unless      => "apt-key list | grep $keyid",
        logoutput   => on_failure,
      }
    }
    absent:  {
      exec { "Remove $keyid from apt keystore":
        path    => "/bin:/usr/bin",
        environment => "HOME=/root",
        command => "apt-key del $keyid",
        user    => "root",
        group   => "root",
        onlyif  => "apt-key list | grep $keyid",
      }
    }
    default: {
      fail "Invalid 'ensure' value '$ensure' for apt::key"
    }
  }
}

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