Skip to content

Commit

Permalink
Set version defaults with hiera data
Browse files Browse the repository at this point in the history
Use hiera module level data to specify default versions
and if a repository should be configured.

This will make adding new OSes easier.
  • Loading branch information
traylenator committed Nov 10, 2023
1 parent 6aa1f37 commit 02e0005
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 90 deletions.
51 changes: 19 additions & 32 deletions REFERENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#### Public Classes

* [`mongodb::client`](#mongodb--client): Class for installing a MongoDB client shell (CLI). == Parameters $ensure:: Desired ensure state of the package. $package_name:: Name of th
* [`mongodb::globals`](#mongodb--globals): Class for setting cross-class global overrides. See README.md for more details.
* [`mongodb::globals`](#mongodb--globals): Class for setting cross-class global overrides. See README.md for more
* [`mongodb::mongos`](#mongodb--mongos): This installs a Mongo Shard daemon. See README.md for more details.
* [`mongodb::mongos::config`](#mongodb--mongos--config): PRIVATE CLASS: do not call directly
* [`mongodb::mongos::install`](#mongodb--mongos--install): PRIVATE CLASS: do not call directly
Expand Down Expand Up @@ -87,12 +87,13 @@ Default value: `$mongodb::client::params::package_name`
### <a name="mongodb--globals"></a>`mongodb::globals`

Class for setting cross-class global overrides. See README.md for more
details.

#### Parameters

The following parameters are available in the `mongodb::globals` class:

* [`version`](#-mongodb--globals--version)
* [`manage_package_repo`](#-mongodb--globals--manage_package_repo)
* [`server_package_name`](#-mongodb--globals--server_package_name)
* [`client_package_name`](#-mongodb--globals--client_package_name)
* [`mongod_service_manage`](#-mongodb--globals--mongod_service_manage)
Expand All @@ -105,8 +106,6 @@ The following parameters are available in the `mongodb::globals` class:
* [`group`](#-mongodb--globals--group)
* [`ipv6`](#-mongodb--globals--ipv6)
* [`bind_ip`](#-mongodb--globals--bind_ip)
* [`version`](#-mongodb--globals--version)
* [`manage_package_repo`](#-mongodb--globals--manage_package_repo)
* [`manage_package`](#-mongodb--globals--manage_package)
* [`repo_proxy`](#-mongodb--globals--repo_proxy)
* [`proxy_username`](#-mongodb--globals--proxy_username)
Expand All @@ -117,6 +116,22 @@ The following parameters are available in the `mongodb::globals` class:
* [`pidfilemode`](#-mongodb--globals--pidfilemode)
* [`manage_pidfile`](#-mongodb--globals--manage_pidfile)

##### <a name="-mongodb--globals--version"></a>`version`

Data type: `Optional[String[1]]`

Version of mongodb to install

Default value: `undef`

##### <a name="-mongodb--globals--manage_package_repo"></a>`manage_package_repo`

Data type: `Optional[Boolean]`

If `true` configure upstream mongodb repos

Default value: `undef`

##### <a name="-mongodb--globals--server_package_name"></a>`server_package_name`

Data type: `Any`
Expand Down Expand Up @@ -213,34 +228,6 @@ Data type: `Any`

Default value: `undef`

##### <a name="-mongodb--globals--version"></a>`version`

Data type: `Any`



Default value:

```puppet
fact('os.distro.codename') ? { # Debian 10 doesn't provide mongodb 3.6.
'buster' => '4.4.8',
default => undef
```

##### <a name="-mongodb--globals--manage_package_repo"></a>`manage_package_repo`

Data type: `Any`



Default value:

```puppet
fact('os.distro.codename') ? { # Debian 10 doesn't provide mongodb packages. So manage it!
'buster' => true,
default => undef
```

##### <a name="-mongodb--globals--manage_package"></a>`manage_package`

Data type: `Any`
Expand Down
3 changes: 3 additions & 0 deletions data/Debian-10.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
mongodb::globals::version: '4.4.8' # Debian 10 doesn't provide mongodb 3.6.
mongodb::globals::manage_package_repo: true # Debian 10 doesn't provide mongodb packages. So manage it!
14 changes: 14 additions & 0 deletions hiera.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
version: 5
defaults:
datadir: 'data'
data_hash: 'yaml_data'
hierarchy:
- name: 'Major Version'
path: '%{facts.os.name}-%{facts.os.release.major}.yaml'
- name: 'OS Family Major Version'
path: '%{facts.os.family}-family-%{facts.os.release.major}.yaml'
- name: 'OS Family'
path: '%{facts.os.family}-family.yaml'
- name: 'common'
path: 'common.yaml'
105 changes: 47 additions & 58 deletions manifests/globals.pp
Original file line number Diff line number Diff line change
@@ -1,40 +1,36 @@
# Class for setting cross-class global overrides. See README.md for more
# details.
# @summary Class for setting cross-class global overrides. See README.md for more
#
# @param version Version of mongodb to install
# @param manage_package_repo If `true` configure upstream mongodb repos
#
class mongodb::globals (
$server_package_name = undef,
$client_package_name = undef,
$server_package_name = undef,
$client_package_name = undef,

$mongod_service_manage = undef,
$service_enable = undef,
$service_ensure = undef,
$service_name = undef,
$service_provider = undef,
$service_status = undef,
$mongod_service_manage = undef,
$service_enable = undef,
$service_ensure = undef,
$service_name = undef,
$service_provider = undef,
$service_status = undef,

$user = undef,
$group = undef,
$ipv6 = undef,
$bind_ip = undef,
$user = undef,
$group = undef,
$ipv6 = undef,
$bind_ip = undef,
Optional[String[1]] $version = undef,
Optional[Boolean] $manage_package_repo = undef,
$manage_package = undef,
$repo_proxy = undef,
$proxy_username = undef,
$proxy_password = undef,

$version = fact('os.distro.codename') ? { # Debian 10 doesn't provide mongodb 3.6.
'buster' => '4.4.8',
default => undef
},
$manage_package_repo = fact('os.distro.codename') ? { # Debian 10 doesn't provide mongodb packages. So manage it!
'buster' => true,
default => undef
},
$manage_package = undef,
$repo_proxy = undef,
$proxy_username = undef,
$proxy_password = undef,
$repo_location = undef,
$use_enterprise_repo = undef,

$repo_location = undef,
$use_enterprise_repo = undef,

$pidfilepath = undef,
$pidfilemode = undef,
$manage_pidfile = undef,
$pidfilepath = undef,
$pidfilemode = undef,
$manage_pidfile = undef,
) {
if $use_enterprise_repo {
$edition = 'enterprise'
Expand All @@ -43,34 +39,27 @@
}

# Setup of the repo only makes sense globally, so we are doing it here.
case $facts['os']['family'] {
'RedHat', 'Linux', 'Suse': {
# For RedHat, Linux and Suse family: if manage_package_repo is set at undef that include mongodb::repo
if $manage_package_repo != false {
class { 'mongodb::repo':
ensure => present,
version => pick($version, '3.6'),
use_enterprise_repo => $use_enterprise_repo,
repo_location => $repo_location,
proxy => $repo_proxy,
}
}
if $manage_package_repo or $manage_package_repo == undef and $facts['os']['family'] in ['RedHat','Linux','Suse'] {
if $use_enterprise_repo == true and $version == undef {
fail('You must set mongodb::globals::version when mongodb::globals::use_enterprise_repo is true')
}

# Set some default working repositories per OS if no version
# specified.
$_repo_version = $version ? {
Undef => $facts['os']['family'] in ['RedHat', 'Linux', 'Suse'] ? {
true => '3.6',
default => $version,
},
default => $version,
}
default: {
# For other (Debian) family: if manage_package_repo is set at undef that not include mongodb::repo
if $manage_package_repo {
if $use_enterprise_repo == true and $version == undef {
fail('You must set mongodb::globals::version when mongodb::globals::use_enterprise_repo is true')
}

class { 'mongodb::repo':
ensure => present,
version => $version,
use_enterprise_repo => $use_enterprise_repo,
repo_location => $repo_location,
proxy => $repo_proxy,
}
}
class { 'mongodb::repo':
ensure => present,
version => $_repo_version,
use_enterprise_repo => $use_enterprise_repo,
repo_location => $repo_location,
proxy => $repo_proxy,
}
}
}

0 comments on commit 02e0005

Please sign in to comment.