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
|
# File 'plans/util/retrieve_and_upload.pp', line 2
plan peadm::util::retrieve_and_upload(
TargetSpec $nodes,
String[1] $source,
String[1] $local_path,
String[1] $upload_path,
) {
# lint:ignore:strict_indent
$nodes.peadm::fail_on_transport('pcp', @(HEREDOC/n))
\nThe "pcp" transport is not available for uploading PE installers as
the ".tar.gz" file is too large to send over the PE Orchestrator
as an argument to the "bolt_shim::upload" task.
To upgrade PE XL database nodes via PCP, use "download_mode = direct".
If Puppet download servers are not reachable over the internet,
upload the ".tar.gz" to an internal fileserver and use the
"pe_installer_source" parameter to retrieve it.
For information on configuring plan parameters, see:
https://forge.puppet.com/modules/puppetlabs/peadm/plans
Or, use the "ssh" transport for database nodes so that the
installer can be transferred via SCP.
For information on configuring transports, see:
https://www.puppet.com/docs/bolt/latest/bolt_transports_reference.html
|-HEREDOC
# lint:endignore
$operating_system = run_task('peadm::os_identification', 'local://localhost')
$os_string =$operating_system.first.value['_output']
if 'windows' in $os_string {
$exists = run_command("[System.IO.File]::Exists('${local_path}')", 'local://localhost')
if $exists.first['stdout'].chomp == 'false' {
run_task('peadm::download', 'local://localhost',
source => $source,
path => $local_path,
)
}
$result_size = run_task('peadm::filesize', 'local://localhost',
path => $local_path,
)
$local_size = $result_size.first.value['_output']
} else {
$exists = without_default_logging() || {
run_command("test -e '${local_path}'", 'local://localhost',
_catch_errors => true,
).ok()
}
unless $exists {
run_task('peadm::download', 'local://localhost',
source => $source,
path => $local_path,
)
}
$local_size = run_task('peadm::filesize', 'local://localhost',
path => $local_path,
).first['size']
}
$targets_needing_file = run_task('peadm::filesize', $nodes,
path => $upload_path,
).filter |$result| {
$result['size'] != $local_size
}.map |$result| {
$result.target
}
upload_file($local_path, $upload_path, $targets_needing_file)
}
|