summaryrefslogtreecommitdiffstats
path: root/manifests/repo.pp
diff options
context:
space:
mode:
authorJames Shubin <james@shubin.ca>2013-12-17 21:35:41 -0500
committerJames Shubin <james@shubin.ca>2013-12-17 21:35:41 -0500
commit562da97b30ef55d8dca06dc9a920085e03d9fd56 (patch)
tree315865b5dafd7f25fa92e414b80517f037e5a2da /manifests/repo.pp
parent7b96488e80a78711539ac814e09892f6fd4afb0f (diff)
downloadpuppet-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.pp99
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