Colleen Murphy 4992c56faf Fix kilo repo installation for RedHat
In kilo, the RDO repository changed the end of its URL path from
'epel-7' to 'el7' for RedHat and CentOS and from 'fedora-#' to 'f#'.
Judging by the liberty testing repository, this will continue to be the
pattern for future releases. This patch adds logic to use the correct
path for Kilo and future releases. It also updates the GPG key to use
the correct one from the RDO-release repository[1].

[1] https://github.com/redhat-openstack/rdo-release/blob/master/RPM-GPG-KEY-RDO-kilo

Change-Id: Ia309b78e81236dee95d2d741fece323929b35709
2015-06-22 13:39:51 -07:00

145 lines
4.8 KiB
Puppet

# == Class: openstack_extras::repo::redhat::redhat
#
# This repo sets up yum repos for use with the redhat
# osfamily and redhat operatingsystem.
#
# === Parameters:
#
# [*release*]
# (optional) The openstack release to use if managing rdo
# Defaults to $::openstack_extras::repo::redhat::params::release
#
# [*manage_rdo*]
# (optional) Whether to create a predefined yumrepo resource
# for the RDO OpenStack repository provided by RedHat
# Defaults to true
#
# [*manage_epel*]
# (optional) Whether to create a predefined yumrepo resource
# for the EPEL repository provided by RedHat
# Defaults to true
#
# [*repo_hash*]
# (optional) A hash of yumrepo resources that will be passed to
# create_resource. See examples folder for some useful examples.
# Defaults to {}
#
# [*repo_defaults*]
# (optional) The defaults for the yumrepo resources that will be
# created using create_resource.
# Defaults to $::openstack_extras::repo::redhat::params::repo_defaults
#
# [*gpgkey_hash*]
# (optional) A hash of file resources that will be passed to
# create_resource. See examples folder for some useful examples.
# Defaults to {}
#
# [*gpgkey_defaults*]
# (optional) The default resource attributes to
# create gpgkeys with.
# Defaults to $::openstack_extras::repo::redhat::params::gpgkey_defaults
#
# [*purge_unmanaged*]
# (optional) Purge the yum.repos.d directory of
# all repositories not managed by Puppet
# Defaults to false
#
# [*package_require*]
# (optional) Set all packages to require all
# yumrepos be set.
# Defaults to false
#
class openstack_extras::repo::redhat::redhat(
$release = $::openstack_extras::repo::redhat::params::release,
$manage_rdo = true,
$manage_epel = true,
$repo_hash = {},
$repo_defaults = {},
$gpgkey_hash = {},
$gpgkey_defaults = {},
$purge_unmanaged = false,
$package_require = false
) inherits openstack_extras::repo::redhat::params {
validate_string($release)
validate_bool($manage_rdo)
validate_bool($manage_epel)
validate_hash($repo_hash)
validate_hash($repo_defaults)
validate_hash($gpgkey_hash)
validate_hash($gpgkey_defaults)
validate_bool($purge_unmanaged)
validate_bool($package_require)
$_repo_defaults = merge($::openstack_extras::repo::redhat::params::repo_defaults, $repo_defaults)
$_gpgkey_defaults = merge($::openstack_extras::repo::redhat::params::gpgkey_defaults, $gpgkey_defaults)
anchor { 'openstack_extras_redhat': }
if $manage_rdo {
$release_cap = capitalize($release)
# In kilo the URL pattern changed
if $release < 'kilo' { # Lexicographically before 'k' release
$_dist = $::openstack_extras::repo::redhat::params::dist_full
} else {
$_dist = $::openstack_extras::repo::redhat::params::dist_short
}
$rdo_hash = { 'rdo-release' => {
'baseurl' => "http://repos.fedorapeople.org/repos/openstack/openstack-${release}/${_dist}${::operatingsystemmajrelease}/",
'descr' => "OpenStack ${release_cap} Repository",
'priority' => $::openstack_extras::repo::redhat::params::rdo_priority,
'gpgkey' => "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-${release_cap}",
}
}
$rdokey_hash = { "/etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-${release_cap}" => {
'source' => "puppet:///modules/openstack_extras/RPM-GPG-KEY-RDO-${release_cap}"
}
}
create_resources('file', $rdokey_hash, $_gpgkey_defaults)
create_resources('yumrepo', $rdo_hash, $_repo_defaults)
}
if $manage_epel {
if ($::osfamily == 'RedHat' and
$::operatingsystem != 'Fedora')
{
$epel_hash = { 'epel' => {
'baseurl' => "https://download.fedoraproject.org/pub/epel/${::operatingsystemmajrelease}/\$basearch",
'descr' => "Extra Packages for Enterprise Linux ${::operatingsystemmajrelease} - \$basearch",
'gpgkey' => "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-${::operatingsystemmajrelease}",
'failovermethod' => 'priority'
}
}
$epelkey_hash = { "/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-${::operatingsystemmajrelease}" => {
'source' => "puppet:///modules/openstack_extras/RPM-GPG-KEY-EPEL-${::operatingsystemmajrelease}"
}
}
create_resources('file', $epelkey_hash, $_gpgkey_defaults)
create_resources('yumrepo', $epel_hash, $_repo_defaults)
}
}
validate_yum_hash($repo_hash)
create_resources('yumrepo', $repo_hash, $_repo_defaults)
create_resources('file', $gpgkey_hash, $_gpgkey_defaults)
if ((versioncmp($::puppetversion, '3.5') > 0) and $purge_unmanaged) {
resources { 'yumrepo': purge => true }
}
if $package_require {
Yumrepo<||> -> Package<||>
}
exec { 'yum_refresh':
command => '/usr/bin/yum clean all',
refreshonly => true,
} -> Package <||>
}