diff options
author | James Shubin <james@shubin.ca> | 2013-12-17 21:35:41 -0500 |
---|---|---|
committer | James Shubin <james@shubin.ca> | 2013-12-17 21:35:41 -0500 |
commit | 562da97b30ef55d8dca06dc9a920085e03d9fd56 (patch) | |
tree | 315865b5dafd7f25fa92e414b80517f037e5a2da /manifests/repo.pp | |
parent | 7b96488e80a78711539ac814e09892f6fd4afb0f (diff) | |
download | puppet-gluster-562da97b30ef55d8dca06dc9a920085e03d9fd56.tar.gz puppet-gluster-562da97b30ef55d8dca06dc9a920085e03d9fd56.tar.xz puppet-gluster-562da97b30ef55d8dca06dc9a920085e03d9fd56.zip |
Automatically add yum repository.
Support for other operating systems will have to come later, even if
this needs to be refactored. For now, CentOS/RHEL are automatic.
Diffstat (limited to 'manifests/repo.pp')
-rw-r--r-- | manifests/repo.pp | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/manifests/repo.pp b/manifests/repo.pp new file mode 100644 index 0000000..e9b53de --- /dev/null +++ b/manifests/repo.pp @@ -0,0 +1,99 @@ +# GlusterFS module by James +# Copyright (C) 2010-2013+ James Shubin +# Written by James Shubin <james@shubin.ca> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +class gluster::repo( + # if you specify 'x.y', it will find the latest x.y.* + # if you specify 'x.y.z', it will stick to that version + # anything omitted is taken to mean "latest" + # if you leave this blank, we assume you want the latest version... + $version = '' +) { + # XXX: this should be https ! + $base = 'http://download.gluster.org/pub/gluster/glusterfs/' + + if "${version}" == '' { + # latest + $base_v = "${base}LATEST/" + } else { + if "${version}" =~ /^(\d+)\.(\d+)$/ { # x.y + #$base_v = "${base}${1}.${2}/LATEST/" # same! + $base_v = "${base}${version}/LATEST/" + + } elsif "${version}" =~ /^(\d+)\.(\d+)\.(\d+)$/ { # x.y.z + #$base_v = "${base}${1}.${2}/${1}.${2}.${3}/" # same! + $base_v = "${base}${1}.${2}/${version}/" + } else { + fail('The version string is invalid.') + } + } + + case $operatingsystem { + 'CentOS': { + $base_os = "${base_v}CentOS/" + } + 'RedHat': { + $base_os = "${base_v}RHEL/" + } + #'Debian', 'Ubuntu': { + #} + default: { + fail("Operating system: '${operatingsystem}' not yet supported.") + } + } + + $arch = "${architecture}" ? { + 'x86_64' => 'x86_64', + 'i386' => 'i386', + 'i486' => 'i386', + 'i586' => 'i386', + 'i686' => 'i386', + default => '', + } + if "${arch}" == '' { + fail("Architecture: '${architecture}' not yet supported.") + } + + $base_arch = "${base_os}/epel-${operatingsystemrelease}/" + + $gpgkey = "${base_os}pub.key" + + include ::yum + + #yum::repos::repo { "gluster-${arch}": + yum::repos::repo { 'gluster': + baseurl => "${base_arch}/${arch}/", + enabled => true, + gpgcheck => true, + # XXX: this should not be an http:// link, it should be a file! + # XXX: it's not even https! how can you even prevent a mitm...! + gpgkeys => ["${gpgkey}"], + ensure => present, + } + + # TODO: technically, i don't think this is needed yet... + #yum::repos::repo { 'gluster-noarch': + # baseurl => "${base_arch}/noarch/", + # enabled => true, + # gpgcheck => true, + # # XXX: this should not be an http:// link, it should be a file! + # # XXX: it's not even https! how can you even prevent a mitm...! + # gpgkeys => ["${gpgkey}"], + # ensure => present, + #} +} + +# vim: ts=8 |