Puppet Class: mongodb::repo

Inherited by:
mongodb::repo::apt
mongodb::repo::yum
mongodb::repo::zypper
Defined in:
manifests/repo.pp

Overview

PRIVATE CLASS: do not use directly

Parameters:

  • ensure (Variant[Enum['present', 'absent'], Boolean]) (defaults to: 'present')
  • version (Optional[String]) (defaults to: undef)
  • use_enterprise_repo (Boolean) (defaults to: false)
  • repo_location (Optional[String]) (defaults to: undef)
  • proxy (Optional[String]) (defaults to: undef)
  • proxy_username (Optional[String]) (defaults to: undef)
  • proxy_password (Optional[String]) (defaults to: undef)
  • aptkey_options (Optional[String[1]]) (defaults to: undef)


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'manifests/repo.pp', line 2

class mongodb::repo (
  Variant[Enum['present', 'absent'], Boolean] $ensure = 'present',
  Optional[String] $version                           = undef,
  Boolean $use_enterprise_repo                        = false,
  Optional[String] $repo_location                     = undef,
  Optional[String] $proxy                             = undef,
  Optional[String] $proxy_username                    = undef,
  Optional[String] $proxy_password                    = undef,
  Optional[String[1]] $aptkey_options                 = undef,
) {
  case $facts['os']['family'] {
    'RedHat', 'Linux': {
      if $repo_location != undef {
        $location = $repo_location
        $description = 'MongoDB Custom Repository'
      } elsif $version == undef or versioncmp($version, '3.0.0') < 0 {
        fail('Package repositories for versions older than 3.0 are unsupported')
      } else {
        $mongover = split($version, '[.]')
        if $use_enterprise_repo {
          $location = "https://repo.mongodb.com/yum/redhat/\$releasever/mongodb-enterprise/${mongover[0]}.${mongover[1]}/\$basearch/"
          $description = 'MongoDB Enterprise Repository'
        } else {
          $location = "https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/${mongover[0]}.${mongover[1]}/\$basearch/"
          $description = 'MongoDB Repository'
        }
      }

      contain mongodb::repo::yum
    }

    'Suse': {
      if $repo_location {
        $location = $repo_location
        $description = 'MongoDB Custom Repository'
      } elsif $version == undef or versioncmp($version, '3.2.0') < 0 {
        fail('Package repositories for versions older than 3.2 are unsupported')
      } else {
        $mongover = split($version, '[.]')
        $location = "https://repo.mongodb.org/zypper/suse/\$releasever_major/mongodb-org/${mongover[0]}.${mongover[1]}/\$basearch/"
        $description = 'MongoDB Repository'
      }

      contain mongodb::repo::zypper
    }

    'Debian': {
      if $repo_location != undef {
        $location = $repo_location
      } elsif $version == undef or versioncmp($version, '3.0.0') < 0 {
        fail('Package repositories for versions older than 3.0 are unsupported')
      } else {
        if $use_enterprise_repo == true {
          $repo_domain = 'repo.mongodb.com'
          $repo_path   = 'mongodb-enterprise'
        } else {
          $repo_domain = 'repo.mongodb.org'
          $repo_path   = 'mongodb-org'
        }

        $mongover = split($version, '[.]')
        $location = $facts['os']['name'] ? {
          'Debian' => "https://${repo_domain}/apt/debian",
          'Ubuntu' => "https://${repo_domain}/apt/ubuntu",
          default  => undef
        }
        $release     = "${facts['os']['distro']['codename']}/${repo_path}/${mongover[0]}.${mongover[1]}"
        $repos       = $facts['os']['name'] ? {
          'Debian' => 'main',
          'Ubuntu' => 'multiverse',
          default => undef
        }
        $key = "${mongover[0]}.${mongover[1]}" ? {
          '5.0'   => 'F5679A222C647C87527C2F8CB00A0BD1E2C63C11',
          '4.4'   => '20691EEC35216C63CAF66CE1656408E390CFB1F5',
          '4.2'   => 'E162F504A20CDF15827F718D4B7C549A058F8B6B',
          '4.0'   => '9DA31620334BD75D9DCB49F368818C72E52529D4',
          '3.6'   => '2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5',
          '3.4'   => '0C49F3730359A14518585931BC711F9BA15703C6',
          '3.2'   => '42F3E95A2C4F08279C4960ADD68FA50FEA312927',
          default => '492EAFE8CD016A07919F1D2B9ECBEC467F0CEB10'
        }
        $key_server = 'hkp://keyserver.ubuntu.com:80'
      }

      contain mongodb::repo::apt
    }

    default: {
      if($ensure == 'present' or $ensure == true) {
        fail("Unsupported managed repository for osfamily: ${facts['os']['family']}, operatingsystem: ${facts['os']['name']}, module ${module_name} currently only supports managing repos for osfamily RedHat, Suse, Debian and Ubuntu")
      }
    }
  }
}