author | ymh <ymh.work@gmail.com> |
Wed, 09 Nov 2016 15:05:41 +0100 | |
changeset 406 | cf0f23803a53 |
parent 28 | b0b56e0f8c7f |
permissions | -rwxr-xr-x |
28 | 1 |
# == Class: elasticsearch::package |
2 |
# |
|
3 |
# This class exists to coordinate all software package management related |
|
4 |
# actions, functionality and logical units in a central place. |
|
5 |
# |
|
6 |
# |
|
7 |
# === Parameters |
|
8 |
# |
|
9 |
# This class does not provide any parameters. |
|
10 |
# |
|
11 |
# |
|
12 |
# === Examples |
|
13 |
# |
|
14 |
# This class may be imported by other classes to use its functionality: |
|
15 |
# class { 'elasticsearch::package': } |
|
16 |
# |
|
17 |
# It is not intended to be used directly by external resources like node |
|
18 |
# definitions or other modules. |
|
19 |
# |
|
20 |
# |
|
21 |
# === Authors |
|
22 |
# |
|
23 |
# * Richard Pijnenburg <mailto:richard.pijnenburg@elasticsearch.com> |
|
24 |
# |
|
25 |
class elasticsearch::package { |
|
26 |
||
27 |
Exec { |
|
28 |
path => [ '/bin', '/usr/bin', '/usr/local/bin' ], |
|
29 |
cwd => '/', |
|
30 |
tries => 3, |
|
31 |
try_sleep => 10, |
|
32 |
} |
|
33 |
||
34 |
#### Package management |
|
35 |
||
36 |
||
37 |
# set params: in operation |
|
38 |
if $elasticsearch::ensure == 'present' { |
|
39 |
||
406
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
40 |
if $elasticsearch::restart_package_change { |
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
41 |
Package[$elasticsearch::package_name] ~> Elasticsearch::Service <| |> |
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
42 |
} |
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
43 |
Package[$elasticsearch::package_name] ~> Exec['remove_plugin_dir'] |
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
44 |
|
28 | 45 |
# Create directory to place the package file |
406
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
46 |
$package_dir = $elasticsearch::package_dir |
28 | 47 |
exec { 'create_package_dir_elasticsearch': |
48 |
cwd => '/', |
|
49 |
path => ['/usr/bin', '/bin'], |
|
406
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
50 |
command => "mkdir -p ${package_dir}", |
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
51 |
creates => $package_dir, |
28 | 52 |
} |
53 |
||
406
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
54 |
file { $package_dir: |
28 | 55 |
ensure => 'directory', |
56 |
purge => $elasticsearch::purge_package_dir, |
|
57 |
force => $elasticsearch::purge_package_dir, |
|
58 |
backup => false, |
|
59 |
require => Exec['create_package_dir_elasticsearch'], |
|
60 |
} |
|
61 |
||
62 |
# Check if we want to install a specific version or not |
|
63 |
if $elasticsearch::version == false { |
|
64 |
||
65 |
$package_ensure = $elasticsearch::autoupgrade ? { |
|
66 |
true => 'latest', |
|
67 |
false => 'present', |
|
68 |
} |
|
69 |
||
70 |
} else { |
|
71 |
||
72 |
# install specific version |
|
73 |
$package_ensure = $elasticsearch::pkg_version |
|
74 |
||
75 |
} |
|
76 |
||
77 |
# action |
|
78 |
if ($elasticsearch::package_url != undef) { |
|
79 |
||
80 |
case $elasticsearch::package_provider { |
|
81 |
'package': { $before = Package[$elasticsearch::package_name] } |
|
82 |
default: { fail("software provider \"${elasticsearch::package_provider}\".") } |
|
83 |
} |
|
84 |
||
85 |
||
86 |
$filenameArray = split($elasticsearch::package_url, '/') |
|
87 |
$basefilename = $filenameArray[-1] |
|
88 |
||
89 |
$sourceArray = split($elasticsearch::package_url, ':') |
|
90 |
$protocol_type = $sourceArray[0] |
|
91 |
||
92 |
$extArray = split($basefilename, '\.') |
|
93 |
$ext = $extArray[-1] |
|
94 |
||
95 |
$pkg_source = "${package_dir}/${basefilename}" |
|
96 |
||
97 |
case $protocol_type { |
|
98 |
||
99 |
'puppet': { |
|
100 |
||
101 |
file { $pkg_source: |
|
102 |
ensure => file, |
|
103 |
source => $elasticsearch::package_url, |
|
104 |
require => File[$package_dir], |
|
105 |
backup => false, |
|
106 |
before => $before, |
|
107 |
} |
|
108 |
||
109 |
} |
|
110 |
'ftp', 'https', 'http': { |
|
111 |
||
112 |
if $elasticsearch::proxy_url != undef { |
|
113 |
$exec_environment = [ |
|
114 |
'use_proxy=yes', |
|
115 |
"http_proxy=${elasticsearch::proxy_url}", |
|
116 |
"https_proxy=${elasticsearch::proxy_url}", |
|
117 |
] |
|
406
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
118 |
} else { |
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
119 |
$exec_environment = [] |
28 | 120 |
} |
121 |
||
122 |
exec { 'download_package_elasticsearch': |
|
123 |
command => "${elasticsearch::params::download_tool} ${pkg_source} ${elasticsearch::package_url} 2> /dev/null", |
|
124 |
creates => $pkg_source, |
|
125 |
environment => $exec_environment, |
|
126 |
timeout => $elasticsearch::package_dl_timeout, |
|
127 |
require => File[$package_dir], |
|
128 |
before => $before, |
|
129 |
} |
|
130 |
||
131 |
} |
|
132 |
'file': { |
|
133 |
||
134 |
$source_path = $sourceArray[1] |
|
135 |
file { $pkg_source: |
|
136 |
ensure => file, |
|
137 |
source => $source_path, |
|
138 |
require => File[$package_dir], |
|
139 |
backup => false, |
|
140 |
before => $before, |
|
141 |
} |
|
142 |
||
143 |
} |
|
144 |
default: { |
|
145 |
fail("Protocol must be puppet, file, http, https, or ftp. You have given \"${protocol_type}\"") |
|
146 |
} |
|
147 |
} |
|
148 |
||
149 |
if ($elasticsearch::package_provider == 'package') { |
|
150 |
||
151 |
case $ext { |
|
152 |
'deb': { Package { provider => 'dpkg', source => $pkg_source } } |
|
153 |
'rpm': { Package { provider => 'rpm', source => $pkg_source } } |
|
154 |
default: { fail("Unknown file extention \"${ext}\".") } |
|
155 |
} |
|
156 |
||
157 |
} |
|
158 |
||
159 |
} |
|
160 |
||
161 |
# Package removal |
|
162 |
} else { |
|
163 |
||
406
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
164 |
if ($::osfamily == 'Suse') { |
28 | 165 |
Package { |
166 |
provider => 'rpm', |
|
167 |
} |
|
406
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
168 |
$package_ensure = 'absent' |
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
169 |
} else { |
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
170 |
$package_ensure = 'purged' |
28 | 171 |
} |
172 |
||
173 |
} |
|
174 |
||
175 |
if ($elasticsearch::package_provider == 'package') { |
|
176 |
||
177 |
package { $elasticsearch::package_name: |
|
406
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
178 |
ensure => $package_ensure, |
28 | 179 |
} |
180 |
||
406
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
181 |
exec { 'remove_plugin_dir': |
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
182 |
refreshonly => true, |
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
183 |
command => "rm -rf ${elasticsearch::plugindir}", |
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
184 |
} |
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
185 |
|
cf0f23803a53
upgrade elasticsearch to 5.0, upgrade ember
ymh <ymh.work@gmail.com>
parents:
28
diff
changeset
|
186 |
|
28 | 187 |
} else { |
188 |
fail("\"${elasticsearch::package_provider}\" is not supported") |
|
189 |
} |
|
190 |
||
191 |
} |