Adding an "openstack::repo" class which automatically sets up repos

Tested with the following combinations:

- RHEL-alikes, OpenStack Folsom
- RHEL-alikes, OpenStack Grizzly
- Fedora 18, OpenStack Grizzly (F18 includes folsom)
- Ubuntu 12.04+, OpenStack Folsom
- Ubuntu 12.04+, OpenStack Grizzly

Change-Id: I737da83d138695a178aaf3fa711a6e08a678adde
This commit is contained in:
Adam Compton
2013-05-21 11:51:58 -07:00
parent b5faef09c8
commit 190e3e0ea7
8 changed files with 257 additions and 0 deletions

31
files/RPM-GPG-KEY-EPEL-6 Normal file
View File

@@ -0,0 +1,31 @@
pub 4096R/0608B895 2010-04-23 EPEL (6) <epel@fedoraproject.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.5 (GNU/Linux)
mQINBEvSKUIBEADLGnUj24ZVKW7liFN/JA5CgtzlNnKs7sBg7fVbNWryiE3URbn1
JXvrdwHtkKyY96/ifZ1Ld3lE2gOF61bGZ2CWwJNee76Sp9Z+isP8RQXbG5jwj/4B
M9HK7phktqFVJ8VbY2jfTjcfxRvGM8YBwXF8hx0CDZURAjvf1xRSQJ7iAo58qcHn
XtxOAvQmAbR9z6Q/h/D+Y/PhoIJp1OV4VNHCbCs9M7HUVBpgC53PDcTUQuwcgeY6
pQgo9eT1eLNSZVrJ5Bctivl1UcD6P6CIGkkeT2gNhqindRPngUXGXW7Qzoefe+fV
QqJSm7Tq2q9oqVZ46J964waCRItRySpuW5dxZO34WM6wsw2BP2MlACbH4l3luqtp
Xo3Bvfnk+HAFH3HcMuwdaulxv7zYKXCfNoSfgrpEfo2Ex4Im/I3WdtwME/Gbnwdq
3VJzgAxLVFhczDHwNkjmIdPAlNJ9/ixRjip4dgZtW8VcBCrNoL+LhDrIfjvnLdRu
vBHy9P3sCF7FZycaHlMWP6RiLtHnEMGcbZ8QpQHi2dReU1wyr9QgguGU+jqSXYar
1yEcsdRGasppNIZ8+Qawbm/a4doT10TEtPArhSoHlwbvqTDYjtfV92lC/2iwgO6g
YgG9XrO4V8dV39Ffm7oLFfvTbg5mv4Q/E6AWo/gkjmtxkculbyAvjFtYAQARAQAB
tCFFUEVMICg2KSA8ZXBlbEBmZWRvcmFwcm9qZWN0Lm9yZz6JAjYEEwECACAFAkvS
KUICGw8GCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRA7Sd8qBgi4lR/GD/wLGPv9
qO39eyb9NlrwfKdUEo1tHxKdrhNz+XYrO4yVDTBZRPSuvL2yaoeSIhQOKhNPfEgT
9mdsbsgcfmoHxmGVcn+lbheWsSvcgrXuz0gLt8TGGKGGROAoLXpuUsb1HNtKEOwP
Q4z1uQ2nOz5hLRyDOV0I2LwYV8BjGIjBKUMFEUxFTsL7XOZkrAg/WbTH2PW3hrfS
WtcRA7EYonI3B80d39ffws7SmyKbS5PmZjqOPuTvV2F0tMhKIhncBwoojWZPExft
HpKhzKVh8fdDO/3P1y1Fk3Cin8UbCO9MWMFNR27fVzCANlEPljsHA+3Ez4F7uboF
p0OOEov4Yyi4BEbgqZnthTG4ub9nyiupIZ3ckPHr3nVcDUGcL6lQD/nkmNVIeLYP
x1uHPOSlWfuojAYgzRH6LL7Idg4FHHBA0to7FW8dQXFIOyNiJFAOT2j8P5+tVdq8
wB0PDSH8yRpn4HdJ9RYquau4OkjluxOWf0uRaS//SUcCZh+1/KBEOmcvBHYRZA5J
l/nakCgxGb2paQOzqqpOcHKvlyLuzO5uybMXaipLExTGJXBlXrbbASfXa/yGYSAG
iVrGz9CE6676dMlm8F+s3XXE13QZrXmjloc6jwOljnfAkjTGXjiB7OULESed96MR
XtfLk0W5Ab9pd7tKDR6QHI7rgHXfCopRnZ2VVQ==
=V/6I
-----END PGP PUBLIC KEY BLOCK-----

View File

@@ -0,0 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)
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
kHVKhYA=
=F6XX
-----END PGP PUBLIC KEY BLOCK-----

23
manifests/repo.pp Normal file
View File

@@ -0,0 +1,23 @@
#
# Sets up the package repos necessary to use OpenStack
# on RHEL-alikes and Ubuntu
#
class openstack::repo(
$release = 'grizzly'
) {
if $release == 'grizzly' {
if $::osfamily == 'RedHat' {
include openstack::repo::rdo
} elsif $::operatingsystem == 'Ubuntu' {
class {'openstack::repo::uca': release => $release }
}
} elsif $release == 'folsom' {
if $::osfamily == 'RedHat' {
include openstack::repo::epel
} elsif $::operatingsystem == 'Ubuntu' {
class {'openstack::repo::uca': release => $release }
}
} else {
notify { "WARNING: openstack::repo parameter 'release' of '${release}' not recognized; please use 'grizzly' or 'folsom'.": }
}
}

26
manifests/repo/epel.pp Normal file
View File

@@ -0,0 +1,26 @@
# EPEL repo (RHEL-alikes only, _not_ Fedora)
class openstack::repo::epel {
if ($::osfamily == 'RedHat' and
$::operatingsystem != 'Fedora' and
$::operatingsystemrelease =~ /^6\..*$/) {
include openstack::repo::yum_refresh
yumrepo { 'epel':
mirrorlist => 'https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch',
descr => 'Extra Packages for Enterprise Linux 6 - $basearch',
enabled => 1,
gpgcheck => 1,
gpgkey => 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6',
failovermethod => priority,
notify => Exec['yum_refresh']
}
file { '/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6':
source => 'puppet:///modules/openstack/RPM-GPG-KEY-EPEL-6',
owner => root,
group => root,
mode => 644,
before => Yumrepo['epel'],
}
Yumrepo['epel'] -> Package<||>
}
}

31
manifests/repo/rdo.pp Normal file
View File

@@ -0,0 +1,31 @@
# RDO repo (supports Grizzly on both RHEL-alikes and Fedora, requires EPEL)
class openstack::repo::rdo {
include openstack::repo::epel
if $::osfamily == 'RedHat' {
$dist = $::operatingsystem ? {
'CentOS' => 'epel',
'Fedora' => 'fedora',
}
# $lsbmajdistrelease is only available with redhat-lsb installed
$osver = regsubst($::operatingsystemrelease, '(\d+)\..*', '\1')
yumrepo { 'rdo-release':
baseurl => "http://repos.fedorapeople.org/repos/openstack/openstack-grizzly/${dist}-${osver}/",
descr => 'OpenStack Grizzly Repository',
enabled => 1,
gpgcheck => 1,
gpgkey => 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Grizzly',
priority => 98,
notify => Exec['yum_refresh'],
}
file { '/etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Grizzly':
source => 'puppet:///modules/openstack/RPM-GPG-KEY-RDO-Grizzly',
owner => root,
group => root,
mode => 644,
before => Yumrepo['rdo-release'],
}
Yumrepo['rdo-release'] -> Package<||>
}
}

18
manifests/repo/uca.pp Normal file
View File

@@ -0,0 +1,18 @@
# Ubuntu Cloud Archive repo (supports either Folsom or Grizzly)
class openstack::repo::uca(
$release = 'grizzly'
) {
if ($::operatingsystem == 'Ubuntu' and
$::lsbdistdescription =~ /^.*LTS.*$/) {
include apt::update
apt::source { 'ubuntu-cloud-archive':
location => 'http://ubuntu-cloud.archive.canonical.com/ubuntu',
release => "${::lsbdistcodename}-updates/${release}",
repos => 'main',
required_packages => 'ubuntu-cloud-keyring',
}
Exec['apt_update'] -> Package<||>
}
}

View File

@@ -0,0 +1,8 @@
# Make sure to refresh yum database after adding repos and before installing packages
class openstack::repo::yum_refresh {
exec { 'yum_refresh':
command => '/usr/bin/yum clean all',
refreshonly => true,
}
Exec['yum_refresh'] -> Package<||>
}

View File

@@ -0,0 +1,68 @@
require 'spec_helper'
describe 'openstack::repo' do
describe 'RHEL and grizzly' do
let :params do
{ :release => 'grizzly' }
end
let :facts do
{
:osfamily => 'RedHat',
:operatingsystem => 'CentOS',
:operatingsystemrelease => '6.4',
}
end
it do
should contain_yumrepo('rdo-release').with(
:baseurl => 'http://repos.fedorapeople.org/repos/openstack/openstack-grizzly/epel-6/'
)
should contain_file('/etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Grizzly')
should contain_yumrepo('epel')
should contain_file('/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6')
end
end
describe 'Fedora and grizzly' do
let :params do
{ :release => 'grizzly' }
end
let :facts do
{
:osfamily => 'RedHat',
:operatingsystem => 'Fedora',
:operatingsystemrelease => '18',
}
end
it do
should contain_yumrepo('rdo-release').with(
:baseurl => 'http://repos.fedorapeople.org/repos/openstack/openstack-grizzly/fedora-18/'
)
should contain_file('/etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Grizzly')
end
end
describe 'Ubuntu and grizzly' do
let :params do
{ :release => 'grizzly' }
end
let :facts do
{
:osfamily => 'Debian',
:operatingsystem => 'Ubuntu',
:operatingsystemrelease => '12.04',
:lsbdistdescription => 'Ubuntu 12.04.1 LTS',
:lsbdistcodename => 'precise',
}
end
it do
should contain_apt__source('ubuntu-cloud-archive').with_release('precise-updates/grizzly')
end
end
end