Skip to content
Snippets Groups Projects
rpm.pp 2.91 KiB
Newer Older
Adam Lewenberg's avatar
Adam Lewenberg committed
#
# RH specific classes that provide RPM repositories.

# base::rpm::yumrepo definition
#
# namevar must match source file name
define base::rpm::yumrepo ($source='base/rpm') {
Adam Lewenberg's avatar
Adam Lewenberg committed
  file { "/etc/yum.repos.d/${name}":
    source  => "puppet:///modules/${source}/${name}",
    require => [ Package['yum'], File['/etc/yum.repos.d'] ]
  }
}

# base::rpm::openafs - provides openafs yum config
class base::rpm::openafs {
  $openafsver = $lsbmajdistrelease ? {
    '4'     => '1.6.2',
    default => '1.6.5',
Adam Lewenberg's avatar
Adam Lewenberg committed
  }
  base::rpm::yumrepo { "openafs-${openafsver}-EL${::lsbmajdistrelease}.repo": }
}

# rpm class.  applied to every RHEL system via basenode (os module)
class base::rpm {
  include base::rpm::openafs

  case $::operatingsystem {
    'redhat': {
      $redhatPackages = [
        'yum',
      ]
      package { $redhatPackages: ensure => present }

      file { '/etc/yum.repos.d':
        ensure  => directory,
        mode    => 0755,
        recurse => true,
        purge   => true,
      }

      # Apply to all RHEL releases
      base::rpm::yumrepo { "dag-EL${::lsbmajdistrelease}.repo": }
      base::rpm::yumrepo { "stanford-priv-EL${::lsbmajdistrelease}.repo": }
      base::rpm::yumrepo { "stanford-rhel${::lsbmajdistrelease}.repo": }
      base::rpm::yumrepo { "stanford-EL${::lsbmajdistrelease}.repo": }

      file {
        # newsyslog config to rotate /var/log/yum.log
        '/etc/newsyslog.daily/yum':
          source  => 'puppet:///modules/base/rpm/etc/newsyslog.daily/yum',
          require => Package['newsyslog'];
      }

      case $::lsbmajdistrelease {
        # RHEL4
        '4': {
          include base::up2date

          base::rpm::yumrepo { 'rhel4.repo': }

        }
        # RHEL5 & RHEL6
        '5','6': {
          $yumpackage = $::lsbmajdistrelease ? {
            '5' => 'yum-downloadonly',
            '6' => 'yum-plugin-downloadonly',
          }
          package { $yumpackage: ensure => present; }

          # disable yum rhn plugin
          exec { 'disable yum rhn plugin':
            command     => "perl -pe 's/enabled = 1/enabled = 0/' -i /etc/yum/pluginconf.d/rhnplugin.conf",
            onlyif      => "[ -e /etc/yum/pluginconf.d/rhnplugin.conf ] && grep -q 'enabled = 1' /etc/yum/pluginconf.d/rhnplugin.conf",
          }
          # enable yum plugins in general
          exec { 'enable yum plugins':
            command     => "perl -pe 's/plugins=0/plugins=1/' -i /etc/yum.conf",
            onlyif      => "grep -q 'plugins=0' /etc/yum.conf",
            require     => Exec['disable yum rhn plugin'],
          }
        }
      }

      # only RHEL4 and RHEL5 use rpmpkgs log
      case $::lsbmajdistrelease {
        '4','5': {
          file {
            # rotate /var/log/rpmpkgs weekly
            '/etc/newsyslog.weekly/rpmpkgs':
              source  => 'puppet:///modules/base/rpm/etc/newsyslog.weekly/rpmpkgs',
              require => Package['newsyslog'];
          }
        }
      }
    }
  }