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:
31
files/RPM-GPG-KEY-EPEL-6
Normal file
31
files/RPM-GPG-KEY-EPEL-6
Normal 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-----
|
52
files/RPM-GPG-KEY-RDO-Grizzly
Normal file
52
files/RPM-GPG-KEY-RDO-Grizzly
Normal 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
23
manifests/repo.pp
Normal 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
26
manifests/repo/epel.pp
Normal 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
31
manifests/repo/rdo.pp
Normal 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
18
manifests/repo/uca.pp
Normal 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<||>
|
||||
}
|
||||
}
|
8
manifests/repo/yum_refresh.pp
Normal file
8
manifests/repo/yum_refresh.pp
Normal 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<||>
|
||||
}
|
68
spec/classes/openstack_repo_spec.rb
Normal file
68
spec/classes/openstack_repo_spec.rb
Normal 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
|
Reference in New Issue
Block a user