newer pg module
[mirror/dsa-puppet.git] / 3rdparty / modules / postgresql / manifests / globals.pp
1 # Class for setting cross-class global overrides. See README.md for more
2 # details.
3 class postgresql::globals (
4   $client_package_name      = undef,
5   $server_package_name      = undef,
6   $contrib_package_name     = undef,
7   $devel_package_name       = undef,
8   $java_package_name        = undef,
9   $docs_package_name        = undef,
10   $perl_package_name        = undef,
11   $plperl_package_name      = undef,
12   $plpython_package_name    = undef,
13   $python_package_name      = undef,
14   $postgis_package_name     = undef,
15
16   $service_name             = undef,
17   $service_provider         = undef,
18   $service_status           = undef,
19   $default_database         = undef,
20
21   $validcon_script_path     = undef,
22
23   $initdb_path              = undef,
24   $createdb_path            = undef,
25   $psql_path                = undef,
26   $pg_hba_conf_path         = undef,
27   $pg_ident_conf_path       = undef,
28   $postgresql_conf_path     = undef,
29   $recovery_conf_path       = undef,
30   $default_connect_settings = {},
31
32   $pg_hba_conf_defaults     = undef,
33
34   $datadir                  = undef,
35   $confdir                  = undef,
36   $bindir                   = undef,
37   $xlogdir                  = undef,
38   $logdir                   = undef,
39   $log_line_prefix          = undef,
40
41   $user                     = undef,
42   $group                    = undef,
43
44   $version                  = undef,
45   $postgis_version          = undef,
46   $repo_proxy               = undef,
47   $repo_baseurl             = undef,
48
49   $needs_initdb             = undef,
50
51   $encoding                 = undef,
52   $locale                   = undef,
53   $data_checksums           = undef,
54   $timezone                 = undef,
55
56   $manage_pg_hba_conf       = undef,
57   $manage_pg_ident_conf     = undef,
58   $manage_recovery_conf     = undef,
59
60   $manage_package_repo      = undef,
61   $module_workdir           = undef,
62 ) {
63   # We are determining this here, because it is needed by the package repo
64   # class.
65   $default_version = $::osfamily ? {
66     /^(RedHat|Linux)/ => $::operatingsystem ? {
67       'Fedora' => $::operatingsystemrelease ? {
68         /^(24|25)$/    => '9.5',
69         /^(22|23)$/    => '9.4',
70         /^(21)$/       => '9.3',
71         /^(18|19|20)$/ => '9.2',
72         /^(17)$/       => '9.1',
73         default        => undef,
74       },
75       'Amazon' => '9.2',
76       default => $::operatingsystemrelease ? {
77         /^7\./ => '9.2',
78         /^6\./ => '8.4',
79         /^5\./ => '8.1',
80         default => undef,
81       },
82     },
83     'Debian' => $::operatingsystem ? {
84       'Debian' => $::operatingsystemrelease ? {
85         /^(squeeze|6\.)/ => '8.4',
86         /^(wheezy|7\.)/  => '9.1',
87         /^(jessie|8\.)/  => '9.4',
88         /^(stretch|9\.)/ => '9.6',
89         default => undef,
90       },
91       'Ubuntu' => $::operatingsystemrelease ? {
92         /^(10.04|10.10|11.04)$/ => '8.4',
93         /^(11.10|12.04|12.10|13.04|13.10)$/ => '9.1',
94         /^(14.04)$/ => '9.3',
95         /^(14.10|15.04|15.10)$/ => '9.4',
96         /^(16.04|16.10)$/ => '9.5',
97         default => undef,
98       },
99       default => undef,
100     },
101     'Archlinux' => $::operatingsystem ? {
102       /Archlinux/ => '9.2',
103       default => '9.2',
104     },
105     'Gentoo' => '9.5',
106     'FreeBSD' => '93',
107     'OpenBSD' => $::operatingsystemrelease ? {
108       /5\.6/ => '9.3',
109       /5\.[7-9]/ => '9.4',
110       /6\.[0-9]/ => '9.5',
111     },
112     'Suse' => $::operatingsystem ? {
113       'SLES' => $::operatingsystemrelease ? {
114         /11\.[0-4]/ => '91',
115         /12\.0/     => '93',
116         default     => '94',
117       },
118       'OpenSuSE' => $::operatingsystemrelease ? {
119         default => '94',
120       },
121       default => undef,
122     },
123     default => undef,
124   }
125   $globals_version = pick($version, $default_version, 'unknown')
126   if($globals_version == 'unknown') {
127     fail('No preferred version defined or automatically detected.')
128   }
129
130   $default_postgis_version = $globals_version ? {
131     '8.1'   => '1.3.6',
132     '8.4'   => '2.0',
133     '9.0'   => '2.1',
134     '9.1'   => '2.1',
135     '91'    => '2.1',
136     '9.2'   => '2.3',
137     '9.3'   => '2.3',
138     '93'    => '2.3',
139     '9.4'   => '2.3',
140     '9.5'   => '2.3',
141     '9.6'   => '2.3',
142     default => undef,
143   }
144   $globals_postgis_version = $postgis_version ? {
145     undef   => $default_postgis_version,
146     default => $postgis_version,
147   }
148
149   # Setup of the repo only makes sense globally, so we are doing this here.
150   if($manage_package_repo) {
151     class { 'postgresql::repo':
152       version => $globals_version,
153       proxy   => $repo_proxy,
154       baseurl => $repo_baseurl,
155     }
156   }
157 }