From 2496d29b67da71cde2ecc307bfb1aee918e4ff3c Mon Sep 17 00:00:00 2001 From: David Cachau Date: Sat, 14 Dec 2024 23:35:24 +0100 Subject: [PATCH] Support for Zabbix 7.2 --- .github/workflows/ci.yml | 2 +- .sync.yml | 2 +- manifests/database/mysql.pp | 4 +++- manifests/database/postgresql.pp | 4 +++- manifests/repo.pp | 14 +++++++++-- manifests/web.pp | 23 ++++++++++++------- spec/classes/database_mysql_spec.rb | 4 +++- spec/classes/database_postgresql_spec.rb | 4 +++- spec/classes/repo_spec.rb | 16 +++++++++++++ spec/support/acceptance/supported_versions.rb | 2 +- 10 files changed, 58 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2b15be20a..e780e19ae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,5 +21,5 @@ jobs: name: Puppet uses: voxpupuli/gha-puppet/.github/workflows/beaker.yml@v3 with: - beaker_facter: 'zabbix_version:Zabbix:5.0,6.0,7.0' + beaker_facter: 'zabbix_version:Zabbix:5.0,6.0,7.0,7.2' unit_runs_on: 'cern-self-hosted' diff --git a/.sync.yml b/.sync.yml index db4f09d6a..d2cfef6e6 100644 --- a/.sync.yml +++ b/.sync.yml @@ -13,5 +13,5 @@ spec/spec_helper.rb: - parameter_documentation .github/workflows/ci.yml: with: - beaker_facter: 'zabbix_version:Zabbix:5.0,6.0,7.0' + beaker_facter: 'zabbix_version:Zabbix:5.0,6.0,7.0,7.2' unit_runs_on: 'cern-self-hosted' diff --git a/manifests/database/mysql.pp b/manifests/database/mysql.pp index 87cc1a547..61abd85ed 100644 --- a/manifests/database/mysql.pp +++ b/manifests/database/mysql.pp @@ -24,7 +24,9 @@ assert_private() if ($database_schema_path == false) or ($database_schema_path == '') { - if versioncmp($zabbix_version, '6.0') >= 0 { + if versioncmp($zabbix_version, '7.2') >= 0 { + $schema_path = '/usr/share/zabbix/sql-scripts/mysql/' + } elsif versioncmp($zabbix_version, '6.0') >= 0 { $schema_path = '/usr/share/zabbix-sql-scripts/mysql/' } else { $schema_path = '/usr/share/doc/zabbix-*-mysql*' diff --git a/manifests/database/postgresql.pp b/manifests/database/postgresql.pp index 10df743f0..366696444 100644 --- a/manifests/database/postgresql.pp +++ b/manifests/database/postgresql.pp @@ -25,7 +25,9 @@ if $database_schema_path != false and $database_schema_path != '' { $schema_path = $database_schema_path - } elsif versioncmp($zabbix_version, '6.0') >= 0 { + } elsif versioncmp($zabbix_version, '7.2') >= 0 { + $schema_path = '/usr/share/zabbix/sql-scripts/postgresql/' + } elsif versioncmp($zabbix_version, '6.0') >= 0 { $schema_path = '/usr/share/zabbix-sql-scripts/postgresql/' } elsif $facts['os']['family'] == 'RedHat' and $facts['os']['release']['major'] == '7' { $schema_path = "/usr/share/doc/zabbix-*-pgsql-${zabbix_version}*/" diff --git a/manifests/repo.pp b/manifests/repo.pp index 305257f83..20b773348 100644 --- a/manifests/repo.pp +++ b/manifests/repo.pp @@ -37,7 +37,12 @@ } $_repo_location = $repo_location ? { - undef => "https://repo.zabbix.com/zabbix/${zabbix_version}/rhel/${majorrelease}/\$basearch/", + undef => versioncmp($zabbix_version, '7.2') ? { + # Version older than 7.2 + -1 => "https://repo.zabbix.com/zabbix/${zabbix_version}/rhel/${majorrelease}/\$basearch/", + # Version 7.2 and newer + default => "https://repo.zabbix.com/zabbix/${zabbix_version}/stable/rhel/${majorrelease}/\$basearch/", + }, default => $repo_location, } @@ -87,7 +92,12 @@ } $_repo_location = $repo_location ? { - undef => "http://repo.zabbix.com/zabbix/${zabbix_version}/${operatingsystem}/", + undef => versioncmp($zabbix_version, '7.2') ? { + # Version older than 7.2 + -1 => "http://repo.zabbix.com/zabbix/${zabbix_version}/${operatingsystem}/", + # Version 7.2 and newer + default => "http://repo.zabbix.com/zabbix/${zabbix_version}/stable/${operatingsystem}/", + }, default => $repo_location, } diff --git a/manifests/web.pp b/manifests/web.pp index 24031259a..007676206 100644 --- a/manifests/web.pp +++ b/manifests/web.pp @@ -258,6 +258,13 @@ # Is set to true, it will create the apache vhost. if $manage_vhost { + $zabbix_ui_dir = versioncmp($zabbix_version, '7.2') ? { + # Version older than 7.2 + -1 => '/usr/share/zabbix', + # Version 7.2 and newer + default => '/usr/share/zabbix/ui', + } + include apache include apache::mod::dir if $facts['os']['family'] == 'RedHat' { @@ -277,7 +284,7 @@ } $fcgi_filematch = { - path => '/usr/share/zabbix', + path => $zabbix_ui_dir, provider => 'directory', addhandlers => [ { @@ -319,7 +326,7 @@ # We create nonssl vhost for redirecting non ssl # traffic to https. apache::vhost { "${zabbix_url}_nonssl": - docroot => '/usr/share/zabbix', + docroot => $zabbix_ui_dir, manage_docroot => false, default_vhost => $default_vhost, port => $apache_listenport, @@ -344,35 +351,35 @@ } apache::vhost { $zabbix_url: - docroot => '/usr/share/zabbix', + docroot => $zabbix_ui_dir, ip => $apache_listen_ip, port => $apache_listen_port, default_vhost => $default_vhost, add_listen => true, directories => [ merge({ - path => '/usr/share/zabbix', + path => $zabbix_ui_dir, provider => 'directory', require => 'all granted', }, $fcgi_filematch ), { - path => '/usr/share/zabbix/conf', + path => "${zabbix_ui_dir}/conf", provider => 'directory', require => 'all denied', }, { - path => '/usr/share/zabbix/api', + path => "${zabbix_ui_dir}/api", provider => 'directory', require => 'all denied', }, { - path => '/usr/share/zabbix/include', + path => "${zabbix_ui_dir}/include", provider => 'directory', require => 'all denied', }, { - path => '/usr/share/zabbix/include/classes', + path => "${zabbix_ui_dir}/include/classes", provider => 'directory', require => 'all denied', }, diff --git a/spec/classes/database_mysql_spec.rb b/spec/classes/database_mysql_spec.rb index 064e65627..8fe6abd39 100644 --- a/spec/classes/database_mysql_spec.rb +++ b/spec/classes/database_mysql_spec.rb @@ -23,7 +23,9 @@ supported_versions.each do |zabbix_version| # path to sql files on Debian and RedHat - path = if Puppet::Util::Package.versioncmp(zabbix_version, '6.0') >= 0 + path = if Puppet::Util::Package.versioncmp(zabbix_version, '7.2') >= 0 + '/usr/share/zabbix/sql-scripts/mysql/' + elsif Puppet::Util::Package.versioncmp(zabbix_version, '6.0') >= 0 '/usr/share/zabbix-sql-scripts/mysql/' else '/usr/share/doc/zabbix-*-mysql*' diff --git a/spec/classes/database_postgresql_spec.rb b/spec/classes/database_postgresql_spec.rb index 6e92d3889..cb1a9f4ee 100644 --- a/spec/classes/database_postgresql_spec.rb +++ b/spec/classes/database_postgresql_spec.rb @@ -28,7 +28,9 @@ end supported_versions.each do |zabbix_version| - path = if Puppet::Util::Package.versioncmp(zabbix_version, '6.0') >= 0 + path = if Puppet::Util::Package.versioncmp(zabbix_version, '7.2') >= 0 + '/usr/share/zabbix/sql-scripts/postgresql/' + elsif Puppet::Util::Package.versioncmp(zabbix_version, '6.0') >= 0 '/usr/share/zabbix-sql-scripts/postgresql/' else '/usr/share/doc/zabbix-*-pgsql' diff --git a/spec/classes/repo_spec.rb b/spec/classes/repo_spec.rb index c89aecb82..d789fb199 100644 --- a/spec/classes/repo_spec.rb +++ b/spec/classes/repo_spec.rb @@ -137,6 +137,22 @@ it { is_expected.to contain_yumrepo('zabbix-nonsupported').with_gpgkey('https://repo.zabbix.com/RPM-GPG-KEY-ZABBIX-B5333005') } if facts[:os]['release']['major'].to_i < 9 it { is_expected.to contain_yumrepo('zabbix-nonsupported').with_gpgkey('https://repo.zabbix.com/RPM-GPG-KEY-ZABBIX-08EFA7DD') } if facts[:os]['release']['major'].to_i >= 9 end + + context "on RedHat #{major} and Zabbix 7.2" do + let :params do + { + zabbix_version: '7.2', + manage_repo: true + } + end + + it { is_expected.to contain_yumrepo('zabbix').with_baseurl("https://repo.zabbix.com/zabbix/7.2/release/rhel/#{major}/$basearch/") } + it { is_expected.to contain_yumrepo('zabbix').with_gpgkey('https://repo.zabbix.com/RPM-GPG-KEY-ZABBIX-B5333005') } + it { is_expected.to contain_yumrepo('zabbix-nonsupported').with_baseurl("https://repo.zabbix.com/non-supported/rhel/#{major}/$basearch/") } + + it { is_expected.to contain_yumrepo('zabbix-nonsupported').with_gpgkey('https://repo.zabbix.com/RPM-GPG-KEY-ZABBIX-B5333005') } if facts[:os]['release']['major'].to_i < 9 + it { is_expected.to contain_yumrepo('zabbix-nonsupported').with_gpgkey('https://repo.zabbix.com/RPM-GPG-KEY-ZABBIX-08EFA7DD') } if facts[:os]['release']['major'].to_i >= 9 + end end end end diff --git a/spec/support/acceptance/supported_versions.rb b/spec/support/acceptance/supported_versions.rb index 8bfeb6672..8f221aba4 100644 --- a/spec/support/acceptance/supported_versions.rb +++ b/spec/support/acceptance/supported_versions.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true def supported_versions - supported_versions = %w[5.0 6.0 7.0] + supported_versions = %w[5.0 6.0 7.0 7.2] # this is a hack so that we don't have to rewrite the existing acceptance tests if (beaker_zabbix_version = ENV.fetch('BEAKER_FACTER_zabbix_version', nil)) supported_versions &= [beaker_zabbix_version]