diff --git a/data/common.yaml b/data/common.yaml new file mode 100644 index 0000000..0719944 --- /dev/null +++ b/data/common.yaml @@ -0,0 +1,4 @@ +--- +globus::repo_baseurl: "https://downloads.globus.org/toolkit/gt6/stable/rpm/%{lookup('globus::url_os')}/%{facts.os.release.major}/$basearch/" +globus::repo_baseurl_v5: "https://downloads.globus.org/globus-connect-server/stable/rpm/%{lookup('globus::url_os')}/%{facts.os.release.major}/$basearch/" +globus::release_url: 'https://downloads.globus.org/toolkit/globus-connect-server/globus-connect-server-repo-latest.noarch.rpm' diff --git a/data/os/RedHat.yaml b/data/os/RedHat.yaml new file mode 100644 index 0000000..4d37db8 --- /dev/null +++ b/data/os/RedHat.yaml @@ -0,0 +1,4 @@ +--- +globus::url_os: el +globus::repo_dependencies: + - yum-plugin-priorities diff --git a/hiera.yaml b/hiera.yaml new file mode 100644 index 0000000..3ad022d --- /dev/null +++ b/hiera.yaml @@ -0,0 +1,14 @@ +--- +version: 5 + +defaults: # Used for any hierarchy level that omits these keys. + datadir: data # This path is relative to hiera.yaml's directory. + data_hash: yaml_data # Use the built-in YAML backend. + +hierarchy: + - name: 'os family major release' + path: "os/%{facts.os.family}/%{facts.os.release.major}.yaml" + - name: 'os family' + path: "os/%{facts.os.family}.yaml" + - name: 'common' + path: 'common.yaml' diff --git a/manifests/init.pp b/manifests/init.pp index de57007..067e77c 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -37,6 +37,7 @@ # @param run_setup_commands # @param manage_firewall # @param manage_epel +# @param repo_dependencies # @param package_name # @param globus_user # @param globus_password @@ -89,9 +90,9 @@ Boolean $include_io_server = true, Boolean $include_id_server = true, Boolean $include_oauth_server = false, - Variant[Stdlib::Httpsurl, Stdlib::Httpurl] $release_url = $globus::params::release_url, - Variant[Stdlib::Httpsurl, Stdlib::Httpurl] $repo_baseurl = $globus::params::repo_baseurl, - Variant[Stdlib::Httpsurl, Stdlib::Httpurl] $repo_baseurl_v5 = $globus::params::repo_baseurl_v5, + Variant[Stdlib::Httpsurl, Stdlib::Httpurl] $release_url = 'https://downloads.globus.org/toolkit/globus-connect-server/globus-connect-server-repo-latest.noarch.rpm', + Variant[Stdlib::Httpsurl, Stdlib::Httpurl] $repo_baseurl = "https://downloads.globus.org/toolkit/gt6/stable/rpm/el/${facts['os']['release']['major']}/\$basearch/", + Variant[Stdlib::Httpsurl, Stdlib::Httpurl] $repo_baseurl_v5 = "https://downloads.globus.org/globus-connect-server/stable/rpm/el/${facts['os']['release']['major']}/\$basearch/", Boolean $remove_cilogon_cron = false, Array $extra_gridftp_settings = [], Optional[String] $first_gridftp_callback = undef, @@ -99,6 +100,7 @@ Boolean $run_setup_commands = true, Boolean $manage_firewall = true, Boolean $manage_epel = true, + Array $repo_dependencies = ['yum-plugin-priorities'], String $package_name = 'globus-connect-server53', @@ -169,12 +171,18 @@ Boolean $oauth_server_behind_firewall = false, Optional[String] $oauth_stylesheet = undef, Optional[String] $oauth_logo = undef, -) inherits globus::params { - - $releasever = $facts['os']['release']['major'] - if versioncmp($releasever, '6') <= 0 { +) { + + $osfamily = $facts.dig('os', 'family') + $osmajor = $facts.dig('os', 'release', 'major') + $supported = ['RedHat-6','RedHat-7'] + $os = "${osfamily}-${osmajor}" + if ! ($os in $supported) { + fail("Unsupported OS: ${osfamily}, module ${module_name} only supports RedHat 6 and 7") + } + if versioncmp($osmajor, '6') <= 0 { if String($version) == '5' { - fail("${module_name}: Version 5 is not supported on OS major release ${releasever}") + fail("${module_name}: Version 5 is not supported on OS major release ${osmajor}") } } diff --git a/manifests/params.pp b/manifests/params.pp deleted file mode 100644 index c014df6..0000000 --- a/manifests/params.pp +++ /dev/null @@ -1,24 +0,0 @@ -# @summary Default values -# @api private -class globus::params { - - case $::osfamily { - 'RedHat': { - $releasever = $facts['os']['release']['major'] - if $::operatingsystem == 'Fedora' { - $url_os = 'fedora' - } else { - $url_os = 'el' - } - $repo_baseurl = "https://downloads.globus.org/toolkit/gt6/stable/rpm/${url_os}/${releasever}/\$basearch/" - $repo_baseurl_v5 = "https://downloads.globus.org/globus-connect-server/stable/rpm/${url_os}/${releasever}/\$basearch/" - $release_url = 'https://downloads.globus.org/toolkit/globus-connect-server/globus-connect-server-repo-latest.noarch.rpm' - $yum_priorities_package = 'yum-plugin-priorities' - } - - default: { - fail("Unsupported osfamily: ${::osfamily}, module ${module_name} only support osfamily RedHat") - } - } - -} diff --git a/manifests/repo/el.pp b/manifests/repo/el.pp index e1397fd..851e777 100644 --- a/manifests/repo/el.pp +++ b/manifests/repo/el.pp @@ -1,7 +1,7 @@ # @summary Manage globus repo # @api private class globus::repo::el { - ensure_packages([$globus::params::yum_priorities_package]) + ensure_packages([$globus::repo_dependencies]) exec { 'RPM-GPG-KEY-Globus': path => '/usr/bin:/bin:/usr/sbin:/sbin', diff --git a/spec/classes/globus_spec.rb b/spec/classes/globus_spec.rb index 697f8f8..99ec97f 100644 --- a/spec/classes/globus_spec.rb +++ b/spec/classes/globus_spec.rb @@ -10,7 +10,6 @@ it { is_expected.to compile.with_all_deps } it { is_expected.to create_class('globus') } - it { is_expected.to contain_class('globus::params') } it { is_expected.to contain_class('epel').that_comes_before('Class[globus::repo::el]') } it { is_expected.to contain_class('globus::repo::el').that_comes_before('Class[globus::install]') }