Skip to content

Commit 7535702

Browse files
puppet: Use structured os.family hash fact (#5003)
1 parent 098cd28 commit 7535702

19 files changed

+81
-49
lines changed

.github/workflows/puppet-test.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,10 @@ jobs:
7272
exit 1
7373
fi
7474
distro=$(for d in $dockerfiles; do echo -n "\"$d\","; done)
75-
puppet_release='"6","7"'
75+
puppet_release='"6","7","8"'
7676
with_instrumentation='"true","false"'
77-
matrix="{\"DISTRO\": [${distro%,}], \"PUPPET_RELEASE\": [${puppet_release}], \"WITH_INSTRUMENTATION\": [${with_instrumentation}]}"
77+
exclude='{"DISTRO": "debian-stretch", "PUPPET_RELEASE": "8"}, {"DISTRO": "ubuntu-xenial", "PUPPET_RELEASE": "8"}' # puppet 8 not supported for these distros
78+
matrix="{\"DISTRO\": [${distro%,}], \"PUPPET_RELEASE\": [${puppet_release}], \"WITH_INSTRUMENTATION\": [${with_instrumentation}], \"exclude\": [${exclude}]}"
7879
echo "$matrix" | jq
7980
echo "matrix=${matrix}" >> $GITHUB_OUTPUT
8081
outputs:
@@ -155,7 +156,7 @@ jobs:
155156
strategy:
156157
matrix:
157158
OS: [ "windows-2022" ]
158-
PUPPET_RELEASE: [ "6.0.2", "7.21.0" ]
159+
PUPPET_RELEASE: [ "6.0.2", "7.21.0", "8.1.0" ]
159160
TEST_CASE: [ "default", "custom_vars" ]
160161
WIN_COLLECTOR_VERSION: [ "0.86.0", "latest" ]
161162
fail-fast: false

deployments/puppet/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## Unreleased
44

5+
## puppet-v0.17.0
6+
7+
- Use `$facts['os']['family']` instead of the legacy `$::osfamily` fact
8+
59
## puppet-v0.16.0
610

711
- Initial support for [Splunk OpenTelemetry for .NET](https://github.com/signalfx/splunk-otel-dotnet) Auto

deployments/puppet/lib/facter/win_collector_path.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Returns empty string if the key or the path does not exist.
33

44
Facter.add(:win_collector_path) do
5-
confine :osfamily => :windows
5+
confine :kernel => 'windows'
66
setcode do
77
begin
88
value = ''

deployments/puppet/lib/facter/win_collector_version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Returns empty string if the key does not exist.
33

44
Facter.add(:win_collector_version) do
5-
confine :osfamily => :windows
5+
confine :kernel => 'windows'
66
setcode do
77
begin
88
value = ''

deployments/puppet/lib/facter/win_programdata.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Returns the PROGRAMDATA env var on windows
22

33
Facter.add(:win_programdata) do
4-
confine :osfamily => :windows
4+
confine :kernel => 'windows'
55
setcode do
66
ENV['PROGRAMDATA']
77
end

deployments/puppet/lib/facter/win_programfiles.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Returns the PROGRAMFILES env var on windows
22

33
Facter.add(:win_programfiles) do
4-
confine :osfamily => :windows
4+
confine :kernel => 'windows'
55
setcode do
66
ENV['PROGRAMFILES']
77
end

deployments/puppet/lib/facter/win_systemdrive.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Returns the SystemDrive env var on windows
22

33
Facter.add(:win_systemdrive) do
4-
confine :osfamily => :windows
4+
confine :kernel => 'windows'
55
setcode do
66
ENV['SystemDrive']
77
end

deployments/puppet/lib/facter/win_temp.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Returns the TEMP env var on windows
22

33
Facter.add(:win_temp) do
4-
confine :osfamily => :windows
4+
confine :kernel => 'windows'
55
setcode do
66
ENV['TEMP']
77
end

deployments/puppet/manifests/collector_service_owner.pp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
noop => true, }
2323
}
2424
else {
25-
$shell = $::osfamily ? {
25+
$shell = $facts['os']['family'] ? {
2626
'debian' => '/usr/sbin/nologin',
2727
default => '/sbin/nologin',
2828
}

deployments/puppet/manifests/init.pp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
fail('The splunk_realm parameter is required')
6161
}
6262

63-
if $::osfamily == 'windows' {
63+
if $facts['os']['family'] == 'windows' {
6464
if empty($collector_version) {
6565
fail('The $collector_version parameter is required for Windows')
6666
}
@@ -70,26 +70,26 @@
7070
}
7171

7272
$collector_service_name = 'splunk-otel-collector'
73-
$collector_package_name = $::osfamily ? {
73+
$collector_package_name = $facts['os']['family'] ? {
7474
'windows' => 'Splunk OpenTelemetry Collector',
7575
default => $collector_service_name,
7676
}
77-
$fluentd_service_name = $::osfamily ? {
77+
$fluentd_service_name = $facts['os']['family'] ? {
7878
'windows' => 'fluentdwinsvc',
7979
default => 'td-agent',
8080
}
81-
$fluentd_package_name = $::osfamily ? {
81+
$fluentd_package_name = $facts['os']['family'] ? {
8282
'windows' => "Td-agent v${fluentd_version}",
8383
default => $fluentd_service_name,
8484
}
8585

86-
if $::osfamily == 'suse' or ('amazon' in downcase($facts['os']['name']) and $facts['os']['release']['major'] == '2023') {
86+
if $facts['os']['family'] == 'suse' or ('amazon' in downcase($facts['os']['name']) and $facts['os']['release']['major'] == '2023') {
8787
$install_fluentd = false
8888
} else {
8989
$install_fluentd = $with_fluentd
9090
}
9191

92-
case $::osfamily {
92+
case $facts['os']['family'] {
9393
'debian': {
9494
if $facts['service_provider'] != 'systemd' {
9595
fail('Only systemd is currently supported')
@@ -156,11 +156,11 @@
156156
}
157157
}
158158
default: {
159-
fail("Your OS (${::osfamily}) is not supported by the Splunk OpenTelemetry Collector")
159+
fail("Your OS (${facts['os']['family']}) is not supported by the Splunk OpenTelemetry Collector")
160160
}
161161
}
162162

163-
if $::osfamily != 'windows' {
163+
if $facts['os']['family'] != 'windows' {
164164
$collector_config_dir = $collector_config_dest.split('/')[0, - 2].join('/')
165165
$env_file_path = '/etc/otel/collector/splunk-otel-collector.conf'
166166

@@ -217,7 +217,7 @@
217217
}
218218

219219
if $install_fluentd {
220-
case $::osfamily {
220+
case $facts['os']['family'] {
221221
'debian': {
222222
package { ['build-essential', 'libcap-ng0', 'libcap-ng-dev', 'pkg-config']:
223223
ensure => 'installed',
@@ -286,11 +286,11 @@
286286
}
287287
}
288288
default: {
289-
fail("Your OS (${::osfamily}) is not supported by the Splunk OpenTelemetry Collector")
289+
fail("Your OS (${facts['os']['family']}) is not supported by the Splunk OpenTelemetry Collector")
290290
}
291291
}
292292

293-
if $::osfamily != 'windows' {
293+
if $facts['os']['family'] != 'windows' {
294294
$fluentd_config_dir = $fluentd_config_dest.split('/')[0, - 2].join('/')
295295
$fluentd_config_override = '/etc/systemd/system/td-agent.service.d/splunk-otel-collector.conf'
296296
$fluentd_config_override_dir= $fluentd_config_override.split('/')[0, - 2].join('/')
@@ -384,18 +384,18 @@
384384
$with_new_instrumentation = $auto_instrumentation_version == 'latest' or versioncmp($auto_instrumentation_version, '0.87.0') >= 0
385385
$dotnet_supported = $facts['os']['architecture'] in ['amd64', 'x86_64'] and ($auto_instrumentation_version == 'latest' or versioncmp($auto_instrumentation_version, '0.99.0') >= 0) # lint:ignore:140chars
386386

387-
if $::osfamily == 'debian' {
387+
if $facts['os']['family'] == 'debian' {
388388
package { $auto_instrumentation_package_name:
389389
ensure => $auto_instrumentation_version,
390390
require => [Class['splunk_otel_collector::collector_debian_repo'], Package[$collector_package_name]],
391391
}
392-
} elsif $::osfamily == 'redhat' or $::osfamily == 'suse' {
392+
} elsif $facts['os']['family'] == 'redhat' or $facts['os']['family'] == 'suse' {
393393
package { $auto_instrumentation_package_name:
394394
ensure => $auto_instrumentation_version,
395395
require => [Class['splunk_otel_collector::collector_yum_repo'], Package[$collector_package_name]],
396396
}
397397
} else {
398-
fail("Splunk OpenTelemetry Auto Instrumentation is not supported for your OS family (${::osfamily})")
398+
fail("Splunk OpenTelemetry Auto Instrumentation is not supported for your OS family (${facts['os']['family']})")
399399
}
400400

401401
if 'nodejs' in $with_auto_instrumentation_sdks and $with_new_instrumentation {

deployments/puppet/manifests/params.pp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
$fluentd_version_stretch = '3.7.1-0'
55
$collector_additional_env_vars = {}
66

7-
if $::osfamily == 'redhat' or $::osfamily == 'debian' or $::osfamily == 'suse' {
7+
if $facts['os']['family'] == 'redhat' or $facts['os']['family'] == 'debian' or $facts['os']['family'] == 'suse' {
88
$collector_version = 'latest'
99
$collector_config_dir = '/etc/otel/collector'
1010
$fluentd_config_dir = "${collector_config_dir}/fluentd"
@@ -13,7 +13,7 @@
1313
$collector_config_source = "${collector_config_dir}/agent_config.yaml"
1414
$collector_config_dest = $collector_config_source
1515
$fluentd_base_url = 'https://packages.treasuredata.com'
16-
if $::osfamily == 'debian' {
16+
if $facts['os']['family'] == 'debian' {
1717
$fluentd_version = downcase($facts['os']['distro']['codename']) ? {
1818
'stretch' => $fluentd_version_stretch,
1919
default => "${fluentd_version_default}-1",
@@ -26,7 +26,7 @@
2626
$auto_instrumentation_version = 'latest'
2727
$auto_instrumentation_java_agent_jar = '/usr/lib/splunk-instrumentation/splunk-otel-javaagent.jar'
2828

29-
} elsif $::osfamily == 'windows' {
29+
} elsif $facts['os']['family'] == 'windows' {
3030
$collector_version = ''
3131
$collector_install_dir = "${::win_programfiles}\\Splunk\\OpenTelemetry Collector"
3232
$collector_config_dir = "${::win_programdata}\\Splunk\\OpenTelemetry Collector"
@@ -42,6 +42,6 @@
4242
$auto_instrumentation_version = ''
4343
$auto_instrumentation_java_agent_jar = ''
4444
} else {
45-
fail("Your OS (${::osfamily}) is not supported by the Splunk OpenTelemetry Collector")
45+
fail("Your OS (${facts['os']['family']}) is not supported by the Splunk OpenTelemetry Collector")
4646
}
4747
}

deployments/puppet/metadata.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "signalfx-splunk_otel_collector",
3-
"version": "0.16.0",
3+
"version": "0.17.0",
44
"author": "Splunk, Inc.",
55
"summary": "This module installs the Splunk OpenTelemetry Collector via distro packages and configures it.",
66
"license": "Apache-2.0",
@@ -10,7 +10,7 @@
1010
"dependencies": [
1111
{
1212
"name": "puppetlabs/apt",
13-
"version_requirement": ">= 4.1.0 <= 7.0.0"
13+
"version_requirement": ">= 4.1.0"
1414
},
1515
{
1616
"name": "puppet/yum",

deployments/puppet/spec/classes/init_spec.rb

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,9 @@
99
end
1010

1111
on_supported_os.each do |os, facts|
12-
if os.include? "windows"
13-
next
14-
end
12+
let(:facts) { facts }
1513
context "on #{os}" do
1614
let(:params) { { 'splunk_access_token' => "testing", 'splunk_realm' => 'test' } }
17-
let(:facts) do
18-
facts
19-
end
20-
2115
it { is_expected.to compile.with_all_deps }
2216
end
2317
end

internal/buildscripts/packaging/tests/deployments/puppet/images/deb/Dockerfile.debian-bullseye

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,13 @@ RUN rm -f /usr/lib/tmpfiles.d/tmp.conf;
3232
RUN systemctl set-default multi-user.target
3333
ENV init /lib/systemd/systemd
3434

35-
RUN puppet module install puppetlabs-stdlib --version 4.24.0
36-
RUN puppet module install puppetlabs-apt --version 7.0.0
35+
RUN if [ $PUPPET_RELEASE -lt 8 ]; then \
36+
puppet module install puppetlabs-stdlib --version 4.24.0 && \
37+
puppet module install puppetlabs-apt --version 7.0.0; \
38+
else \
39+
puppet module install puppetlabs-stdlib --version 9.0.0 && \
40+
puppet module install puppetlabs-apt --version 9.1.0; \
41+
fi
3742

3843
COPY deployments/puppet /etc/puppetlabs/code/environments/production/modules/splunk_otel_collector
3944

internal/buildscripts/packaging/tests/deployments/puppet/images/deb/Dockerfile.debian-buster

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,13 @@ RUN rm -f /usr/lib/tmpfiles.d/tmp.conf;
3232
RUN systemctl set-default multi-user.target
3333
ENV init /lib/systemd/systemd
3434

35-
RUN puppet module install puppetlabs-stdlib --version 4.24.0
36-
RUN puppet module install puppetlabs-apt --version 7.0.0
35+
RUN if [ $PUPPET_RELEASE -lt 8 ]; then \
36+
puppet module install puppetlabs-stdlib --version 4.24.0 && \
37+
puppet module install puppetlabs-apt --version 7.0.0; \
38+
else \
39+
puppet module install puppetlabs-stdlib --version 9.0.0 && \
40+
puppet module install puppetlabs-apt --version 9.1.0; \
41+
fi
3742

3843
COPY deployments/puppet /etc/puppetlabs/code/environments/production/modules/splunk_otel_collector
3944

internal/buildscripts/packaging/tests/deployments/puppet/images/deb/Dockerfile.ubuntu-bionic

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,13 @@ RUN rm -f /lib/systemd/system/multi-user.target.wants/* \
2828
RUN systemctl set-default multi-user.target
2929
ENV init /lib/systemd/systemd
3030

31-
RUN puppet module install puppetlabs-stdlib --version 4.24.0
32-
RUN puppet module install puppetlabs-apt --version 7.0.0
31+
RUN if [ $PUPPET_RELEASE -lt 8 ]; then \
32+
puppet module install puppetlabs-stdlib --version 4.24.0 && \
33+
puppet module install puppetlabs-apt --version 7.0.0; \
34+
else \
35+
puppet module install puppetlabs-stdlib --version 9.0.0 && \
36+
puppet module install puppetlabs-apt --version 9.1.0; \
37+
fi
3338

3439
COPY deployments/puppet /etc/puppetlabs/code/environments/production/modules/splunk_otel_collector
3540

internal/buildscripts/packaging/tests/deployments/puppet/images/deb/Dockerfile.ubuntu-focal

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,13 @@ RUN rm -f /lib/systemd/system/multi-user.target.wants/* \
2828
RUN systemctl set-default multi-user.target
2929
ENV init /lib/systemd/systemd
3030

31-
RUN puppet module install puppetlabs-stdlib --version 4.24.0
32-
RUN puppet module install puppetlabs-apt --version 7.0.0
31+
RUN if [ $PUPPET_RELEASE -lt 8 ]; then \
32+
puppet module install puppetlabs-stdlib --version 4.24.0 && \
33+
puppet module install puppetlabs-apt --version 7.0.0; \
34+
else \
35+
puppet module install puppetlabs-stdlib --version 9.0.0 && \
36+
puppet module install puppetlabs-apt --version 9.1.0; \
37+
fi
3338

3439
COPY deployments/puppet /etc/puppetlabs/code/environments/production/modules/splunk_otel_collector
3540

internal/buildscripts/packaging/tests/deployments/puppet/images/deb/Dockerfile.ubuntu-jammy

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,13 @@ RUN rm -f /lib/systemd/system/multi-user.target.wants/* \
2828
RUN systemctl set-default multi-user.target
2929
ENV init /lib/systemd/systemd
3030

31-
RUN puppet module install puppetlabs-stdlib --version 4.24.0
32-
RUN puppet module install puppetlabs-apt --version 7.0.0
31+
RUN if [ $PUPPET_RELEASE -lt 8 ]; then \
32+
puppet module install puppetlabs-stdlib --version 4.24.0 && \
33+
puppet module install puppetlabs-apt --version 7.0.0; \
34+
else \
35+
puppet module install puppetlabs-stdlib --version 9.0.0 && \
36+
puppet module install puppetlabs-apt --version 9.1.0; \
37+
fi
3338

3439
COPY deployments/puppet /etc/puppetlabs/code/environments/production/modules/splunk_otel_collector
3540

internal/buildscripts/packaging/tests/deployments/puppet/puppet_test.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,8 @@ def verify_env_file(container, api_url=SPLUNK_API_URL, ingest_url=SPLUNK_INGEST_
126126

127127

128128
def skip_if_necessary(distro, puppet_release):
129-
if distro == "ubuntu-focal":
130-
pytest.skip("requires https://github.com/puppetlabs/puppetlabs-release/issues/271 to be resolved")
129+
if distro in ("debian-stretch", "ubuntu-xenial") and int(puppet_release) >= 8:
130+
pytest.skip(f"Puppet {puppet_release} not supported for {distro}")
131131

132132

133133
def node_package_installed(container):
@@ -160,6 +160,8 @@ class {{ splunk_otel_collector:
160160
)
161161
@pytest.mark.parametrize("puppet_release", PUPPET_RELEASE)
162162
def test_puppet_default(distro, puppet_release):
163+
skip_if_necessary(distro, puppet_release)
164+
163165
if distro in DEB_DISTROS:
164166
dockerfile = IMAGES_DIR / "deb" / f"Dockerfile.{distro}"
165167
else:
@@ -201,6 +203,8 @@ class {{ splunk_otel_collector:
201203
)
202204
@pytest.mark.parametrize("puppet_release", PUPPET_RELEASE)
203205
def test_puppet_with_custom_vars(distro, puppet_release):
206+
skip_if_necessary(distro, puppet_release)
207+
204208
if distro in DEB_DISTROS:
205209
dockerfile = IMAGES_DIR / "deb" / f"Dockerfile.{distro}"
206210
else:
@@ -253,6 +257,8 @@ class {{ splunk_otel_collector:
253257
@pytest.mark.parametrize("version", ["0.86.0", "latest"])
254258
@pytest.mark.parametrize("with_systemd", ["true", "false"])
255259
def test_puppet_with_default_instrumentation(distro, puppet_release, version, with_systemd):
260+
skip_if_necessary(distro, puppet_release)
261+
256262
if distro in DEB_DISTROS:
257263
dockerfile = IMAGES_DIR / "deb" / f"Dockerfile.{distro}"
258264
else:
@@ -352,6 +358,8 @@ class {{ splunk_otel_collector:
352358
@pytest.mark.parametrize("version", ["0.86.0", "latest"])
353359
@pytest.mark.parametrize("with_systemd", ["true", "false"])
354360
def test_puppet_with_custom_instrumentation(distro, puppet_release, version, with_systemd):
361+
skip_if_necessary(distro, puppet_release)
362+
355363
if distro in DEB_DISTROS:
356364
dockerfile = IMAGES_DIR / "deb" / f"Dockerfile.{distro}"
357365
else:

0 commit comments

Comments
 (0)