Skip to content

Commit bd2787a

Browse files
committed
(PA-7586) Upgrade puppetcore* dmg from artifacts-puppetcore.puppet.com
When using the puppetcore collection on macOS, if we detect the version does not match, then upgrade the DMG. Due to a puppet bug, we cannot pass credentials in the `source` parameter, so curl using 'netrc' to pass credentials securely. Note facter's `os.release.major` returns the Darwin kernel version (23), but our packages are named after the OS version (14), so use `os.macosx.version.major`. ``` class { 'puppet_agent': package_version => '8.13.1', collection => 'puppetcore8', username => 'forge-key', password => Sensitive(...) } include 'puppet_agent' ```
1 parent f7cd3cd commit bd2787a

File tree

3 files changed

+58
-1
lines changed

3 files changed

+58
-1
lines changed

manifests/osfamily/darwin.pp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,21 @@
2020
} else {
2121
$source = "puppet:///pe_packages/${pe_server_version}/${facts['platform_tag']}/${puppet_agent::package_name}-${puppet_agent::prepare::package_version}-1.osx${$productversion_major}.dmg"
2222
}
23+
} elsif $puppet_agent::collection =~ /core/ {
24+
$source = 'https://artifacts-puppetcore.puppet.com/v1/download'
2325
} else {
2426
$source = "${puppet_agent::mac_source}/mac/${puppet_agent::collection}/${productversion_major}/${puppet_agent::arch}/${puppet_agent::package_name}-${puppet_agent::prepare::package_version}-1.osx${$productversion_major}.dmg"
2527
}
2628

29+
$destination_name = if $puppet_agent::collection =~ /core/ {
30+
"${puppet_agent::package_name}-${puppet_agent::prepare::package_version}-1.osx${$productversion_major}.dmg"
31+
} else {
32+
undef
33+
}
34+
2735
class { 'puppet_agent::prepare::package':
28-
source => $source,
36+
source => $source,
37+
destination_name => $destination_name,
2938
}
3039

3140
contain puppet_agent::prepare::package

manifests/prepare/package.pp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,29 @@
5656
creates => $local_package_file_path,
5757
require => File[$puppet_agent::params::local_packages_dir],
5858
}
59+
} elsif $puppet_agent::collection =~ /core/ and $facts['os']['family'] =~ /Darwin/ {
60+
$download_username = getvar('puppet_agent::username', 'forge-key')
61+
$download_password = unwrap(getvar('puppet_agent::password'))
62+
$osname = 'osx'
63+
$osversion = $facts['os']['macosx']['version']['major']
64+
$osarch = $facts['os']['architecture']
65+
$fips = 'false'
66+
$dev = count(split($puppet_agent::prepare::package_version, '\.')) > 3
67+
68+
$_download_puppet = "${puppet_agent::params::local_packages_dir}/download_puppet.sh"
69+
file { $_download_puppet:
70+
ensure => file,
71+
owner => $puppet_agent::params::user,
72+
group => $puppet_agent::params::group,
73+
mode => '0700',
74+
content => Sensitive(epp('puppet_agent/download_puppet.sh.epp')),
75+
}
76+
77+
exec { 'Download Puppet Agent':
78+
command => [$_download_puppet],
79+
creates => $local_package_file_path,
80+
require => File[$puppet_agent::params::local_packages_dir],
81+
}
5982
} else {
6083
file { $local_package_file_path:
6184
ensure => file,

templates/download_puppet.sh.epp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/env bash
2+
set -x
3+
netrc=$(mktemp)
4+
trap 'rm -f "$netrc"' EXIT
5+
chmod 0600 "$netrc"
6+
cat <<EOF > "$netrc"
7+
machine artifacts-puppetcore.puppet.com
8+
login <%= $puppet_agent::prepare::package::download_username %>
9+
password <%= $puppet_agent::prepare::package::download_password %>
10+
EOF
11+
/opt/puppetlabs/puppet/bin/curl \
12+
--get \
13+
--fail \
14+
--location \
15+
--netrc-file "$netrc" \
16+
--retry 3 \
17+
--data-urlencode "version=<%= $puppet_agent::prepare::package_version %>" \
18+
--data-urlencode "dev=<%= $puppet_agent::prepare::package::dev %>" \
19+
--data-urlencode "os_name=<%= $puppet_agent::prepare::package::osname %>" \
20+
--data-urlencode "os_version=<%= $puppet_agent::prepare::package::osversion %>" \
21+
--data-urlencode "os_arch=<%= $puppet_agent::prepare::package::osarch %>" \
22+
--data-urlencode "fips=<%= $puppet_agent::prepare::package::fips %>" \
23+
--output "<%= $puppet_agent::prepare::package::local_package_file_path %>" \
24+
"<%= $puppet_agent::prepare::package::source %>"
25+

0 commit comments

Comments
 (0)