1 # PRIVATE CLASS: do not use directly
2 class postgresql::params inherits postgresql::globals {
3 $version = $postgresql::globals::globals_version
4 $postgis_version = $postgresql::globals::globals_postgis_version
5 $listen_addresses = undef
7 $log_line_prefix = undef
8 $ip_mask_deny_postgres_user = '0.0.0.0/0'
9 $ip_mask_allow_all_users = '127.0.0.1/32'
12 $encoding = $postgresql::globals::encoding
13 $locale = $postgresql::globals::locale
14 $data_checksums = $postgresql::globals::data_checksums
15 $timezone = $postgresql::globals::timezone
16 $service_ensure = 'running'
17 $service_enable = true
18 $service_manage = true
19 $service_restart_on_change = true
20 $service_provider = $postgresql::globals::service_provider
21 $manage_pg_hba_conf = pick($manage_pg_hba_conf, true)
22 $manage_pg_ident_conf = pick($manage_pg_ident_conf, true)
23 $manage_recovery_conf = pick($manage_recovery_conf, false)
24 $package_ensure = 'present'
25 $module_workdir = pick($module_workdir,'/tmp')
27 # Amazon Linux's OS Family is 'Linux', operating system 'Amazon'.
30 $link_pg_config = true
31 $user = pick($user, 'postgres')
32 $group = pick($group, 'postgres')
33 $needs_initdb = pick($needs_initdb, true)
34 $version_parts = split($version, '[.]')
35 $package_version = "${version_parts[0]}${version_parts[1]}"
37 if $version == $postgresql::globals::default_version and $::operatingsystem != 'Amazon' {
38 $client_package_name = pick($client_package_name, 'postgresql')
39 $server_package_name = pick($server_package_name, 'postgresql-server')
40 $contrib_package_name = pick($contrib_package_name,'postgresql-contrib')
41 $devel_package_name = pick($devel_package_name, 'postgresql-devel')
42 $java_package_name = pick($java_package_name, 'postgresql-jdbc')
43 $docs_package_name = pick($docs_package_name, 'postgresql-docs')
44 $plperl_package_name = pick($plperl_package_name, 'postgresql-plperl')
45 $plpython_package_name = pick($plpython_package_name, 'postgresql-plpython')
46 $service_name = pick($service_name, 'postgresql')
47 $bindir = pick($bindir, '/usr/bin')
48 $datadir = $::operatingsystem ? {
49 'Amazon' => pick($datadir, "/var/lib/pgsql${package_version}/data"),
50 default => pick($datadir, '/var/lib/pgsql/data'),
52 $confdir = pick($confdir, $datadir)
54 $client_package_name = pick($client_package_name, "postgresql${package_version}")
55 $server_package_name = pick($server_package_name, "postgresql${package_version}-server")
56 $contrib_package_name = pick($contrib_package_name,"postgresql${package_version}-contrib")
57 $devel_package_name = pick($devel_package_name, "postgresql${package_version}-devel")
58 $java_package_name = pick($java_package_name, "postgresql${package_version}-jdbc")
59 $docs_package_name = pick($docs_package_name, "postgresql${package_version}-docs")
60 $plperl_package_name = pick($plperl_package_name, "postgresql${package_version}-plperl")
61 $plpython_package_name = pick($plpython_package_name, "postgresql${package_version}-plpython")
62 $service_name = $::operatingsystem ? {
63 'Amazon' => pick($service_name, "postgresql${version_parts[0]}${version_parts[1]}"),
64 default => pick($service_name, "postgresql-${version}"),
66 $bindir = $::operatingsystem ? {
67 'Amazon' => pick($bindir, '/usr/bin'),
68 default => pick($bindir, "/usr/pgsql-${version}/bin"),
70 $datadir = $::operatingsystem ? {
71 'Amazon' => pick($datadir, "/var/lib/pgsql${package_version}/data"),
72 default => pick($datadir, "/var/lib/pgsql/${version}/data"),
74 $confdir = pick($confdir, $datadir)
76 $psql_path = pick($psql_path, "${bindir}/psql")
78 $service_status = $service_status
79 $service_reload = "service ${service_name} reload"
80 $perl_package_name = pick($perl_package_name, 'perl-DBD-Pg')
81 $python_package_name = pick($python_package_name, 'python-psycopg2')
83 if $postgresql::globals::postgis_package_name {
84 $postgis_package_name = $postgresql::globals::postgis_package_name
85 } elsif $::operatingsystemrelease =~ /^5\./ {
86 $postgis_package_name = 'postgis'
87 } elsif $postgis_version and versioncmp($postgis_version, '2') < 0 {
88 $postgis_package_name = "postgis${package_version}"
90 $postgis_package_name = "postgis2_${package_version}"
95 $link_pg_config = true
96 $needs_initdb = pick($needs_initdb, true)
97 $user = pick($user, 'postgres')
98 $group = pick($group, 'postgres')
100 # Archlinux doesn't have a client-package but has a libs package which
101 # pulls in postgresql server
102 $client_package_name = pick($client_package_name, 'postgresql')
103 $server_package_name = pick($server_package_name, 'postgresql-libs')
104 $java_package_name = pick($java_package_name, 'postgresql-jdbc')
105 # Archlinux doesn't have develop packages
106 $devel_package_name = pick($devel_package_name, 'postgresql-devel')
107 # Archlinux does have postgresql-contrib but it isn't maintained
108 $contrib_package_name = pick($contrib_package_name,'undef')
109 # Archlinux postgresql package provides plperl
110 $plperl_package_name = pick($plperl_package_name, 'undef')
111 $plpython_package_name = pick($plpython_package_name, 'undef')
112 $service_name = pick($service_name, 'postgresql')
113 $bindir = pick($bindir, '/usr/bin')
114 $datadir = pick($datadir, '/var/lib/postgres/data')
115 $confdir = pick($confdir, $datadir)
116 $psql_path = pick($psql_path, "${bindir}/psql")
118 $service_status = $service_status
119 $service_reload = "systemctl reload ${service_name}"
120 $python_package_name = pick($python_package_name, 'python-psycopg2')
121 # Archlinux does not have a perl::DBD::Pg package
122 $perl_package_name = pick($perl_package_name, 'undef')
126 $link_pg_config = false
127 $user = pick($user, 'postgres')
128 $group = pick($group, 'postgres')
130 if $postgresql::globals::manage_package_repo == true {
131 $needs_initdb = pick($needs_initdb, true)
132 $service_name = pick($service_name, 'postgresql')
134 $needs_initdb = pick($needs_initdb, false)
135 $service_name = $::operatingsystem ? {
136 'Debian' => pick($service_name, 'postgresql'),
137 'Ubuntu' => $::lsbmajdistrelease ? {
138 /^10/ => pick($service_name, "postgresql-${version}"),
139 default => pick($service_name, 'postgresql'),
145 $client_package_name = pick($client_package_name, "postgresql-client-${version}")
146 $server_package_name = pick($server_package_name, "postgresql-${version}")
147 $contrib_package_name = pick($contrib_package_name, "postgresql-contrib-${version}")
148 if $postgis_version and versioncmp($postgis_version, '2') < 0 {
149 $postgis_package_name = pick($postgis_package_name, "postgresql-${version}-postgis")
151 $postgis_package_name = pick($postgis_package_name, "postgresql-${version}-postgis-${postgis_version}")
153 $devel_package_name = pick($devel_package_name, 'libpq-dev')
154 $java_package_name = $::operatingsystem ? {
155 'Debian' => $::operatingsystemrelease ? {
156 /^6/ => pick($java_package_name, 'libpg-java'),
157 default => pick($java_package_name, 'libpostgresql-jdbc-java'),
159 default => pick($java_package_name, 'libpostgresql-jdbc-java'),
161 $perl_package_name = pick($perl_package_name, 'libdbd-pg-perl')
162 $plperl_package_name = pick($plperl_package_name, "postgresql-plperl-${version}")
163 $plpython_package_name = pick($plpython_package_name, "postgresql-plpython-${version}")
164 $python_package_name = pick($python_package_name, 'python-psycopg2')
166 $bindir = pick($bindir, "/usr/lib/postgresql/${version}/bin")
167 $datadir = pick($datadir, "/var/lib/postgresql/${version}/main")
168 $confdir = pick($confdir, "/etc/postgresql/${version}/main")
169 if $::operatingsystem == 'Debian' and versioncmp($::operatingsystemrelease, '8.0') >= 0 {
170 # Jessie uses systemd
171 $service_status = pick($service_status, "/usr/sbin/service ${service_name}@*-main status")
172 } elsif $::operatingsystem == 'Ubuntu' and versioncmp($::operatingsystemrelease, '15.04') >= 0 {
173 # Ubuntu releases since vivid use systemd
174 $service_status = pick($service_status, "/usr/sbin/service ${service_name} status")
176 $service_status = pick($service_status, "/etc/init.d/${service_name} status | /bin/egrep -q 'Running clusters: .+|online'")
178 $service_reload = "service ${service_name} reload"
179 $psql_path = pick($psql_path, '/usr/bin/psql')
183 $user = pick($user, 'postgres')
184 $group = pick($group, 'postgres')
186 $client_package_name = pick($client_package_name, 'UNSET')
187 $server_package_name = pick($server_package_name, 'postgresql')
188 $contrib_package_name = pick_default($contrib_package_name, undef)
189 $devel_package_name = pick_default($devel_package_name, undef)
190 $java_package_name = pick($java_package_name, 'jdbc-postgresql')
191 $perl_package_name = pick($perl_package_name, 'DBD-Pg')
192 $plperl_package_name = undef
193 $python_package_name = pick($python_package_name, 'psycopg')
195 $service_name = pick($service_name, "postgresql-${version}")
196 $bindir = pick($bindir, "/usr/lib/postgresql-${version}/bin")
197 $datadir = pick($datadir, "/var/lib/postgresql/${version}_data")
198 $confdir = pick($confdir, "/etc/postgresql-${version}")
199 $service_status = pick($service_status, "systemctl status ${service_name}")
200 $service_reload = "systemctl reload ${service_name}"
201 $psql_path = pick($psql_path, "${bindir}/psql")
203 $needs_initdb = pick($needs_initdb, true)
209 $user = pick($user, 'postgres')
210 $group = pick($group, 'postgres')
211 $datadir = pick($datadir, "/var/db/postgres/data${version}")
214 $user = pick($user, 'pgsql')
215 $group = pick($group, 'pgsql')
216 $datadir = pick($datadir, '/usr/local/pgsql/data')
220 $link_pg_config = true
221 $client_package_name = pick($client_package_name, "databases/postgresql${version}-client")
222 $server_package_name = pick($server_package_name, "databases/postgresql${version}-server")
223 $contrib_package_name = pick($contrib_package_name, "databases/postgresql${version}-contrib")
224 $devel_package_name = pick($devel_package_name, 'databases/postgresql-libpqxx3')
225 $java_package_name = pick($java_package_name, 'databases/postgresql-jdbc')
226 $perl_package_name = pick($plperl_package_name, 'databases/p5-DBD-Pg')
227 $plperl_package_name = pick($plperl_package_name, "databases/postgresql${version}-plperl")
228 $python_package_name = pick($python_package_name, 'databases/py-psycopg2')
230 $service_name = pick($service_name, 'postgresql')
231 $bindir = pick($bindir, '/usr/local/bin')
232 $confdir = pick($confdir, $datadir)
233 $service_status = pick($service_status, "/usr/local/etc/rc.d/${service_name} onestatus")
234 $service_reload = "service ${service_name} reload"
235 $psql_path = pick($psql_path, "${bindir}/psql")
237 $needs_initdb = pick($needs_initdb, true)
241 $user = pick($user, '_postgresql')
242 $group = pick($group, '_postgresql')
244 $client_package_name = pick($client_package_name, 'postgresql-client')
245 $server_package_name = pick($server_package_name, 'postgresql-server')
246 $contrib_package_name = pick($contrib_package_name, 'postgresql-contrib')
247 $devel_package_name = pick($devel_package_name, 'postgresql-client')
248 $java_package_name = pick($java_package_name, 'postgresql-jdbc')
249 $perl_package_name = pick($perl_package_name, 'databases/p5-DBD-Pg')
250 $plperl_package_name = undef
251 $python_package_name = pick($python_package_name, 'py-psycopg2')
253 $service_name = pick($service_name, 'postgresql')
254 $bindir = pick($bindir, '/usr/local/bin')
255 $datadir = pick($datadir, '/var/postgresql/data')
256 $confdir = pick($confdir, $datadir)
257 $service_status = pick($service_status, "/etc/rc.d/${service_name} check")
258 $service_reload = "/etc/rc.d/${service_name} reload"
259 $psql_path = pick($psql_path, "${bindir}/psql")
261 $needs_initdb = pick($needs_initdb, true)
265 $link_pg_config = true
266 $user = pick($user, 'postgres')
267 $group = pick($group, 'postgres')
269 $client_package_name = pick($client_package_name, "postgresql${version}")
270 $server_package_name = pick($server_package_name, "postgresql${version}-server")
271 $contrib_package_name = pick($contrib_package_name, "postgresql${version}-contrib")
272 $devel_package_name = pick($devel_package_name, "postgresql${version}-devel")
273 $java_package_name = pick($java_package_name, "postgresql${version}-jdbc")
274 $perl_package_name = pick($plperl_package_name, 'perl-DBD-Pg')
275 $plperl_package_name = pick($plperl_package_name, "postgresql${version}-plperl")
276 $python_package_name = pick($python_package_name, 'python-psycopg2')
278 $service_name = pick($service_name, 'postgresql')
279 $bindir = pick($bindir, "/usr/lib/postgresql${version}/bin")
280 $datadir = pick($datadir, '/var/lib/pgsql/data')
281 $confdir = pick($confdir, $datadir)
282 if $::operatingsystem == 'SLES' and versioncmp($::operatingsystemrelease, '11.4') <= 0 {
283 $service_status = pick($service_status, "/etc/init.d/${service_name} status")
284 $service_reload = "/etc/init.d/${service_name} reload"
286 $service_status = pick($service_status, "systemctl status ${service_name}")
287 $service_reload = "systemctl reload ${service_name}"
289 $psql_path = pick($psql_path, "${bindir}/psql")
291 $needs_initdb = pick($needs_initdb, true)
295 $link_pg_config = true
296 $psql_path = pick($psql_path, "${bindir}/psql")
298 # Since we can't determine defaults on our own, we rely on users setting
299 # parameters with the postgresql::globals class. Here we are checking
300 # that the mandatory minimum is set for the module to operate.
301 $err_prefix = "Module ${module_name} does not provide defaults for osfamily: ${::osfamily} operatingsystem: ${::operatingsystem}; please specify a value for ${module_name}::globals::"
302 if ($needs_initdb == undef) { fail("${err_prefix}needs_initdb") }
303 if ($service_name == undef) { fail("${err_prefix}service_name") }
304 if ($client_package_name == undef) { fail("${err_prefix}client_package_name") }
305 if ($server_package_name == undef) { fail("${err_prefix}server_package_name") }
306 if ($bindir == undef) { fail("${err_prefix}bindir") }
307 if ($datadir == undef) { fail("${err_prefix}datadir") }
308 if ($confdir == undef) { fail("${err_prefix}confdir") }
312 $validcon_script_path = pick($validcon_script_path, '/usr/local/bin/validate_postgresql_connection.sh')
313 $initdb_path = pick($initdb_path, "${bindir}/initdb")
314 $pg_hba_conf_path = pick($pg_hba_conf_path, "${confdir}/pg_hba.conf")
315 $pg_hba_conf_defaults = pick($pg_hba_conf_defaults, true)
316 $pg_ident_conf_path = pick($pg_ident_conf_path, "${confdir}/pg_ident.conf")
317 $postgresql_conf_path = pick($postgresql_conf_path, "${confdir}/postgresql.conf")
318 $recovery_conf_path = pick($recovery_conf_path, "${datadir}/recovery.conf")
319 $default_database = pick($default_database, 'postgres')