diff --git a/manifests/repo.pp b/manifests/repo.pp index 41b88b01..cbbedc71 100644 --- a/manifests/repo.pp +++ b/manifests/repo.pp @@ -124,34 +124,47 @@ default => $repo_location, } - apt::key { 'zabbix-FBABD5F': - id => 'FBABD5FB20255ECAB22EE194D13D58E479EA5ED4', - source => 'https://repo.zabbix.com/zabbix-official-repo.key', - } - apt::key { 'zabbix-A1848F5': - id => 'A1848F5352D022B9471D83D0082AB56BA14FE591', - source => 'https://repo.zabbix.com/zabbix-official-repo.key', - } - apt::key { 'zabbix-4C3D6F2': - id => '4C3D6F2CC75F5146754FC374D913219AB5333005', - source => 'https://repo.zabbix.com/zabbix-official-repo.key', - } - # Debian 11 provides Zabbix 5.0 by default. This can cause problems for 4.0 versions $pinpriority = $facts['os']['release']['major'] ? { '11' => 1000, default => undef, } - apt::source { 'zabbix': - location => $_repo_location, - repos => 'main', - release => $releasename, - pin => $pinpriority, - require => [ - Apt_key['zabbix-FBABD5F'], - Apt_key['zabbix-A1848F5'], - Apt_key['zabbix-4C3D6F2'], - ], + + if (fact('os.name') == 'Ubuntu' and versioncmp(fact('os.release.major'), '22.04') >= 0 or fact('os.name') == 'Debian' and versioncmp(fact('os.release.major'), '12') >= 0) { + apt::source { 'zabbix': + location => $_repo_location, + repos => 'main', + release => $releasename, + pin => $pinpriority, + key => { + name => 'zabbix-official-repo.asc', + source => 'https://repo.zabbix.com/zabbix-official-repo.key', + }, + } + } else { + apt::key { 'zabbix-FBABD5F': + id => 'FBABD5FB20255ECAB22EE194D13D58E479EA5ED4', + source => 'https://repo.zabbix.com/zabbix-official-repo.key', + } + apt::key { 'zabbix-A1848F5': + id => 'A1848F5352D022B9471D83D0082AB56BA14FE591', + source => 'https://repo.zabbix.com/zabbix-official-repo.key', + } + apt::key { 'zabbix-4C3D6F2': + id => '4C3D6F2CC75F5146754FC374D913219AB5333005', + source => 'https://repo.zabbix.com/zabbix-official-repo.key', + } + apt::source { 'zabbix': + location => $_repo_location, + repos => 'main', + release => $releasename, + pin => $pinpriority, + require => [ + Apt::Key['zabbix-FBABD5F'], + Apt::Key['zabbix-A1848F5'], + Apt::Key['zabbix-4C3D6F2'], + ], + } } Apt::Source['zabbix'] -> Package<|tag == 'zabbix'|> diff --git a/spec/classes/agent_spec.rb b/spec/classes/agent_spec.rb index c52280fc..aa8825c4 100644 --- a/spec/classes/agent_spec.rb +++ b/spec/classes/agent_spec.rb @@ -65,11 +65,12 @@ # service = facts[:os]['family'] == 'Gentoo' ? 'zabbix-agentd' : 'zabbix-agent' context 'with all defaults' do - it { is_expected.to contain_selinux__module('zabbix-agent') } if facts[:os]['family'] == 'RedHat' - it { is_expected.to contain_yumrepo('zabbix-frontend') } if facts[:os]['family'] == 'RedHat' && facts[:os]['release']['major'] == '7' - it { is_expected.to contain_package('zabbix-required-scl-repo') } if facts[:os]['family'] == 'RedHat' && facts[:os]['release']['major'] == '7' && %w[OracleLinux CentOS].include?(facts[:os]['name']) - it { is_expected.to contain_apt__key('zabbix-A1848F5') } if facts[:os]['family'] == 'Debian' - it { is_expected.to contain_apt__key('zabbix-FBABD5F') } if facts[:os]['family'] == 'Debian' + it { is_expected.to contain_selinux__module('zabbix-agent') } if facts[:os]['family'] == 'RedHat' + it { is_expected.to contain_yumrepo('zabbix-frontend') } if facts[:os]['family'] == 'RedHat' && facts[:os]['release']['major'] == '7' + it { is_expected.to contain_package('zabbix-required-scl-repo') } if facts[:os]['family'] == 'RedHat' && facts[:os]['release']['major'] == '7' && %w[OracleLinux CentOS].include?(facts[:os]['name']) + it { is_expected.to contain_apt__key('zabbix-A1848F5') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') < 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') < 0) + it { is_expected.to contain_apt__key('zabbix-FBABD5F') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') < 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') < 0) + it { is_expected.to contain_apt__keyring('zabbix-official-repo.asc') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') >= 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') >= 0) it { is_expected.to contain_file(include_dir).with_ensure('directory') } # Make sure package will be installed, service running and ensure of directory. diff --git a/spec/classes/javagateway_spec.rb b/spec/classes/javagateway_spec.rb index 5350a82c..dc114cbc 100644 --- a/spec/classes/javagateway_spec.rb +++ b/spec/classes/javagateway_spec.rb @@ -27,10 +27,11 @@ it { is_expected.to contain_service('zabbix-java-gateway').with_enable('true') } it { is_expected.to contain_service('zabbix-java-gateway').with_require(['Package[zabbix-java-gateway]', 'File[/etc/zabbix/zabbix_java_gateway.conf]']) } - it { is_expected.to contain_yumrepo('zabbix-frontend') } if facts[:os]['family'] == 'RedHat' && facts[:os]['release']['major'] == '7' + it { is_expected.to contain_yumrepo('zabbix-frontend') } if facts[:os]['family'] == 'RedHat' && facts[:os]['release']['major'] == '7' it { is_expected.to contain_package('zabbix-required-scl-repo') } if facts[:os]['family'] == 'RedHat' && facts[:os]['release']['major'] == '7' && %w[OracleLinux CentOS].include?(facts[:os]['name']) - it { is_expected.to contain_apt__key('zabbix-A1848F5') } if facts[:os]['family'] == 'Debian' - it { is_expected.to contain_apt__key('zabbix-FBABD5F') } if facts[:os]['family'] == 'Debian' + it { is_expected.to contain_apt__key('zabbix-A1848F5') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') < 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') < 0) + it { is_expected.to contain_apt__key('zabbix-FBABD5F') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') < 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') < 0) + it { is_expected.to contain_apt__keyring('zabbix-official-repo.asc') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') >= 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') >= 0) end context 'when declaring manage_repo is true' do diff --git a/spec/classes/repo_spec.rb b/spec/classes/repo_spec.rb index 1ff31bf8..c6fd8ae7 100644 --- a/spec/classes/repo_spec.rb +++ b/spec/classes/repo_spec.rb @@ -20,8 +20,9 @@ it { is_expected.to contain_class('zabbix::params') } it { is_expected.to contain_class('zabbix::repo') } - it { is_expected.to contain_apt__key('zabbix-A1848F5') } if facts[:os]['family'] == 'Debian' - it { is_expected.to contain_apt__key('zabbix-FBABD5F') } if facts[:os]['family'] == 'Debian' + it { is_expected.to contain_apt__key('zabbix-A1848F5') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') < 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') < 0) + it { is_expected.to contain_apt__key('zabbix-FBABD5F') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') < 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') < 0) + it { is_expected.to contain_apt__keyring('zabbix-official-repo.asc') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') >= 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') >= 0) context 'when repo_location is "https://example.com/foo"' do let :params do diff --git a/spec/classes/sender_spec.rb b/spec/classes/sender_spec.rb index 47f96393..995f4d5d 100644 --- a/spec/classes/sender_spec.rb +++ b/spec/classes/sender_spec.rb @@ -53,8 +53,10 @@ it { is_expected.to contain_package('zabbix-required-scl-repo') } if facts[:os]['release']['major'] == '7' && %w[OracleLinux CentOS].include?(facts[:os]['name']) when 'Debian' it { is_expected.to contain_apt__source('zabbix') } - it { is_expected.to contain_apt__key('zabbix-A1848F5') } - it { is_expected.to contain_apt__key('zabbix-FBABD5F') } + + it { is_expected.to contain_apt__key('zabbix-A1848F5') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') < 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') < 0) + it { is_expected.to contain_apt__key('zabbix-FBABD5F') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') < 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') < 0) + it { is_expected.to contain_apt__keyring('zabbix-official-repo.asc') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') >= 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') >= 0) end end end diff --git a/spec/classes/server_spec.rb b/spec/classes/server_spec.rb index 910819ef..9f4117f5 100644 --- a/spec/classes/server_spec.rb +++ b/spec/classes/server_spec.rb @@ -27,9 +27,10 @@ it { is_expected.to contain_service('zabbix-server').with_ensure('running') } it { is_expected.not_to contain_zabbix__startup('zabbix-server') } - it { is_expected.to contain_apt__source('zabbix') } if facts[:os]['family'] == 'Debian' - it { is_expected.to contain_apt__key('zabbix-A1848F5') } if facts[:os]['family'] == 'Debian' - it { is_expected.to contain_apt__key('zabbix-FBABD5F') } if facts[:os]['family'] == 'Debian' + it { is_expected.to contain_apt__source('zabbix') } if facts[:os]['family'] == 'Debian' + it { is_expected.to contain_apt__key('zabbix-A1848F5') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') < 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') < 0) + it { is_expected.to contain_apt__key('zabbix-FBABD5F') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') < 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') < 0) + it { is_expected.to contain_apt__keyring('zabbix-official-repo.asc') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') >= 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') >= 0) end if facts[:os]['family'] == 'RedHat' diff --git a/spec/classes/web_spec.rb b/spec/classes/web_spec.rb index 5864765e..43214e1a 100644 --- a/spec/classes/web_spec.rb +++ b/spec/classes/web_spec.rb @@ -40,8 +40,9 @@ class { 'apache': it { is_expected.to contain_class('Zabbix::Repo') } it { is_expected.to contain_file('/etc/zabbix/web').with_ensure('directory') } - it { is_expected.to contain_apt__key('zabbix-A1848F5') } if facts[:os]['family'] == 'Debian' - it { is_expected.to contain_apt__key('zabbix-FBABD5F') } if facts[:os]['family'] == 'Debian' + it { is_expected.to contain_apt__key('zabbix-A1848F5') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') < 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') < 0) + it { is_expected.to contain_apt__key('zabbix-FBABD5F') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') < 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') < 0) + it { is_expected.to contain_apt__keyring('zabbix-official-repo.asc') } if (facts[:os]['name'] == 'Debian' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '12') >= 0) || (facts[:os]['name'] == 'Ubuntu' && Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '22.04') >= 0) it { is_expected.to contain_apt__source('zabbix') } if facts[:os]['family'] == 'Debian' it { is_expected.to contain_yumrepo('zabbix') } if facts[:os]['family'] == 'RedHat' it { is_expected.to contain_yumrepo('zabbix-nonsupported') } if facts[:os]['family'] == 'RedHat'