1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
# 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 {
notice("GlusterFS version: '${version}' was chosen.")
# parse out the -release if it exists. example: 3.4.2-13.el6
# \1 is the major/minor version, eg: 3.4.2
# \2 is the release with a leading dash, eg: -13.el6
# \3 is the first part of the release, eg: 13
# \4 is the second part of the release, eg: el6
$real_v = regsubst("${version}", '^([\d\.]*)(\-([\d]{1,})\.([a-zA-Z\d]{1,}))?$', '\1')
if "${real_v}" =~ /^(\d+)\.(\d+)$/ { # x.y
#$base_v = "${base}${1}.${2}/LATEST/" # same!
$base_v = "${base}${real_v}/LATEST/"
} elsif "${real_v}" =~ /^(\d+)\.(\d+)\.(\d+)$/ { # x.y.z
#$base_v = "${base}${1}.${2}/${1}.${2}.${3}/" # same!
$base_v = "${base}${1}.${2}/${real_v}/"
} 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
|