params.pp 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  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 = 'localhost'
  6. $port = 5432
  7. $log_line_prefix = '%t '
  8. $ip_mask_deny_postgres_user = '0.0.0.0/0'
  9. $ip_mask_allow_all_users = '127.0.0.1/32'
  10. $ipv4acls = []
  11. $ipv6acls = []
  12. $encoding = $postgresql::globals::encoding
  13. $locale = $postgresql::globals::locale
  14. $service_ensure = 'running'
  15. $service_enable = true
  16. $service_manage = true
  17. $service_restart_on_change = true
  18. $service_provider = $postgresql::globals::service_provider
  19. $manage_pg_hba_conf = pick($manage_pg_hba_conf, true)
  20. $manage_pg_ident_conf = pick($manage_pg_ident_conf, true)
  21. $manage_recovery_conf = pick($manage_recovery_conf, false)
  22. $package_ensure = 'present'
  23. # Amazon Linux's OS Family is 'Linux', operating system 'Amazon'.
  24. case $::osfamily {
  25. 'RedHat', 'Linux': {
  26. $link_pg_config = true
  27. $user = pick($user, 'postgres')
  28. $group = pick($group, 'postgres')
  29. $needs_initdb = pick($needs_initdb, true)
  30. $version_parts = split($version, '[.]')
  31. $package_version = "${version_parts[0]}${version_parts[1]}"
  32. if $version == $postgresql::globals::default_version and $::operatingsystem != 'Amazon' {
  33. $client_package_name = pick($client_package_name, 'postgresql')
  34. $server_package_name = pick($server_package_name, 'postgresql-server')
  35. $contrib_package_name = pick($contrib_package_name,'postgresql-contrib')
  36. $devel_package_name = pick($devel_package_name, 'postgresql-devel')
  37. $java_package_name = pick($java_package_name, 'postgresql-jdbc')
  38. $docs_package_name = pick($docs_package_name, 'postgresql-docs')
  39. $plperl_package_name = pick($plperl_package_name, 'postgresql-plperl')
  40. $plpython_package_name = pick($plpython_package_name, 'postgresql-plpython')
  41. $service_name = pick($service_name, 'postgresql')
  42. $bindir = pick($bindir, '/usr/bin')
  43. $datadir = $::operatingsystem ? {
  44. 'Amazon' => pick($datadir, "/var/lib/pgsql${package_version}/data"),
  45. default => pick($datadir, '/var/lib/pgsql/data'),
  46. }
  47. $confdir = pick($confdir, $datadir)
  48. } else {
  49. $client_package_name = pick($client_package_name, "postgresql${package_version}")
  50. $server_package_name = pick($server_package_name, "postgresql${package_version}-server")
  51. $contrib_package_name = pick($contrib_package_name,"postgresql${package_version}-contrib")
  52. $devel_package_name = pick($devel_package_name, "postgresql${package_version}-devel")
  53. $java_package_name = pick($java_package_name, "postgresql${package_version}-jdbc")
  54. $docs_package_name = pick($docs_package_name, "postgresql${package_version}-docs")
  55. $plperl_package_name = pick($plperl_package_name, "postgresql${package_version}-plperl")
  56. $plpython_package_name = pick($plpython_package_name, "postgresql${package_version}-plpython")
  57. $service_name = $::operatingsystem ? {
  58. 'Amazon' => pick($service_name, "postgresql${version_parts[0]}${version_parts[1]}"),
  59. default => pick($service_name, "postgresql-${version}"),
  60. }
  61. $bindir = $::operatingsystem ? {
  62. 'Amazon' => pick($bindir, '/usr/bin'),
  63. default => pick($bindir, "/usr/pgsql-${version}/bin"),
  64. }
  65. $datadir = $::operatingsystem ? {
  66. 'Amazon' => pick($datadir, "/var/lib/pgsql${package_version}/data"),
  67. default => pick($datadir, "/var/lib/pgsql/${version}/data"),
  68. }
  69. $confdir = pick($confdir, $datadir)
  70. }
  71. $psql_path = pick($psql_path, "${bindir}/psql")
  72. $service_status = $service_status
  73. $service_reload = "service ${service_name} reload"
  74. $perl_package_name = pick($perl_package_name, 'perl-DBD-Pg')
  75. $python_package_name = pick($python_package_name, 'python-psycopg2')
  76. if $postgresql::globals::postgis_package_name {
  77. $postgis_package_name = $postgresql::globals::postgis_package_name
  78. } elsif $::operatingsystemrelease =~ /^5\./ {
  79. $postgis_package_name = 'postgis'
  80. } elsif $postgis_version and versioncmp($postgis_version, '2') < 0 {
  81. $postgis_package_name = "postgis${package_version}"
  82. } else {
  83. $postgis_package_name = "postgis2_${package_version}"
  84. }
  85. }
  86. 'Archlinux': {
  87. $link_pg_config = true
  88. $needs_initdb = pick($needs_initdb, true)
  89. $user = pick($user, 'postgres')
  90. $group = pick($group, 'postgres')
  91. # Archlinux doesn't have a client-package but has a libs package which
  92. # pulls in postgresql server
  93. $client_package_name = pick($client_package_name, 'postgresql')
  94. $server_package_name = pick($server_package_name, 'postgresql-libs')
  95. $java_package_name = pick($java_package_name, 'postgresql-jdbc')
  96. # Archlinux doesn't have develop packages
  97. $devel_package_name = pick($devel_package_name, 'postgresql-devel')
  98. # Archlinux does have postgresql-contrib but it isn't maintained
  99. $contrib_package_name = pick($contrib_package_name,'undef')
  100. # Archlinux postgresql package provides plperl
  101. $plperl_package_name = pick($plperl_package_name, 'undef')
  102. $plpython_package_name = pick($plpython_package_name, 'undef')
  103. $service_name = pick($service_name, 'postgresql')
  104. $bindir = pick($bindir, '/usr/bin')
  105. $datadir = pick($datadir, '/var/lib/postgres/data')
  106. $confdir = pick($confdir, $datadir)
  107. $psql_path = pick($psql_path, "${bindir}/psql")
  108. $service_status = $service_status
  109. $service_reload = "systemctl reload ${service_name}"
  110. $python_package_name = pick($python_package_name, 'python-psycopg2')
  111. # Archlinux does not have a perl::DBD::Pg package
  112. $perl_package_name = pick($perl_package_name, 'undef')
  113. }
  114. 'Debian': {
  115. $link_pg_config = false
  116. $user = pick($user, 'postgres')
  117. $group = pick($group, 'postgres')
  118. if $postgresql::globals::manage_package_repo == true {
  119. $needs_initdb = pick($needs_initdb, true)
  120. $service_name = pick($service_name, 'postgresql')
  121. } else {
  122. $needs_initdb = pick($needs_initdb, false)
  123. $service_name = $::operatingsystem ? {
  124. 'Debian' => pick($service_name, 'postgresql'),
  125. 'Ubuntu' => $::lsbmajdistrelease ? {
  126. /^10/ => pick($service_name, "postgresql-${version}"),
  127. default => pick($service_name, 'postgresql'),
  128. },
  129. default => undef
  130. }
  131. }
  132. $client_package_name = pick($client_package_name, "postgresql-client-${version}")
  133. $server_package_name = pick($server_package_name, "postgresql-${version}")
  134. $contrib_package_name = pick($contrib_package_name, "postgresql-contrib-${version}")
  135. if $postgis_version and versioncmp($postgis_version, '2') < 0 {
  136. $postgis_package_name = pick($postgis_package_name, "postgresql-${version}-postgis")
  137. } else {
  138. $postgis_package_name = pick($postgis_package_name, "postgresql-${version}-postgis-${postgis_version}")
  139. }
  140. $devel_package_name = pick($devel_package_name, 'libpq-dev')
  141. $java_package_name = pick($java_package_name, 'libpostgresql-jdbc-java')
  142. $perl_package_name = pick($perl_package_name, 'libdbd-pg-perl')
  143. $plperl_package_name = pick($plperl_package_name, "postgresql-plperl-${version}")
  144. $plpython_package_name = pick($plpython_package_name, "postgresql-plpython-${version}")
  145. $python_package_name = pick($python_package_name, 'python-psycopg2')
  146. $bindir = pick($bindir, "/usr/lib/postgresql/${version}/bin")
  147. $datadir = pick($datadir, "/var/lib/postgresql/${version}/main")
  148. $confdir = pick($confdir, "/etc/postgresql/${version}/main")
  149. if $::operatingsystem == 'Debian' and versioncmp($::operatingsystemrelease, '8.0') >= 0 {
  150. # Jessie uses systemd
  151. $service_status = pick($service_status, "/usr/sbin/service ${service_name}@*-main status")
  152. } elsif $::operatingsystem == 'Ubuntu' and versioncmp($::operatingsystemrelease, '15.04') >= 0 {
  153. # Ubuntu releases since vivid use systemd
  154. $service_status = pick($service_status, "/usr/sbin/service ${service_name} status")
  155. } else {
  156. $service_status = pick($service_status, "/etc/init.d/${service_name} status | /bin/egrep -q 'Running clusters: .+|online'")
  157. }
  158. $service_reload = "service ${service_name} reload"
  159. $psql_path = pick($psql_path, '/usr/bin/psql')
  160. }
  161. 'FreeBSD': {
  162. $link_pg_config = true
  163. $user = pick($user, 'pgsql')
  164. $group = pick($group, 'pgsql')
  165. $client_package_name = pick($client_package_name, "databases/postgresql${version}-client")
  166. $server_package_name = pick($server_package_name, "databases/postgresql${version}-server")
  167. $contrib_package_name = pick($contrib_package_name, "databases/postgresql${version}-contrib")
  168. $devel_package_name = pick($devel_package_name, 'databases/postgresql-libpqxx3')
  169. $java_package_name = pick($java_package_name, 'databases/postgresql-jdbc')
  170. $perl_package_name = pick($plperl_package_name, 'databases/p5-DBD-Pg')
  171. $plperl_package_name = pick($plperl_package_name, "databases/postgresql${version}-plperl")
  172. $python_package_name = pick($python_package_name, 'databases/py-psycopg2')
  173. $service_name = pick($service_name, 'postgresql')
  174. $bindir = pick($bindir, '/usr/local/bin')
  175. $datadir = pick($datadir, '/usr/local/pgsql/data')
  176. $confdir = pick($confdir, $datadir)
  177. $service_status = pick($service_status, "/usr/local/etc/rc.d/${service_name} onestatus")
  178. $service_reload = "service ${service_name} reload"
  179. $psql_path = pick($psql_path, "${bindir}/psql")
  180. $needs_initdb = pick($needs_initdb, true)
  181. }
  182. 'OpenBSD': {
  183. $user = pick($user, '_postgresql')
  184. $group = pick($group, '_postgresql')
  185. $client_package_name = pick($client_package_name, 'postgresql-client')
  186. $server_package_name = pick($server_package_name, 'postgresql-server')
  187. $contrib_package_name = pick($contrib_package_name, 'postgresql-contrib')
  188. $devel_package_name = pick($devel_package_name, 'postgresql-client')
  189. $java_package_name = pick($java_package_name, 'postgresql-jdbc')
  190. $perl_package_name = pick($perl_package_name, 'databases/p5-DBD-Pg')
  191. $plperl_package_name = undef
  192. $python_package_name = pick($python_package_name, 'py-psycopg2')
  193. $service_name = pick($service_name, 'postgresql')
  194. $bindir = pick($bindir, '/usr/local/bin')
  195. $datadir = pick($datadir, '/var/postgresql/data')
  196. $confdir = pick($confdir, $datadir)
  197. $service_status = pick($service_status, "/etc/rc.d/${service_name} check")
  198. $service_reload = "/etc/rc.d/${service_name} reload"
  199. $psql_path = pick($psql_path, "${bindir}/psql")
  200. $needs_initdb = pick($needs_initdb, true)
  201. }
  202. 'Suse': {
  203. $link_pg_config = true
  204. $user = pick($user, 'postgres')
  205. $group = pick($group, 'postgres')
  206. $client_package_name = pick($client_package_name, "postgresql${version}")
  207. $server_package_name = pick($server_package_name, "postgresql${version}-server")
  208. $contrib_package_name = pick($contrib_package_name, "postgresql${version}-contrib")
  209. $devel_package_name = pick($devel_package_name, "postgresql${version}-devel")
  210. $java_package_name = pick($java_package_name, "postgresql${version}-jdbc")
  211. $perl_package_name = pick($plperl_package_name, 'perl-DBD-Pg')
  212. $plperl_package_name = pick($plperl_package_name, "postgresql${version}-plperl")
  213. $python_package_name = pick($python_package_name, 'python-psycopg2')
  214. $service_name = pick($service_name, 'postgresql')
  215. $bindir = pick($bindir, "/usr/lib/postgresql${version}/bin")
  216. $datadir = pick($datadir, '/var/lib/pgsql/data')
  217. $confdir = pick($confdir, $datadir)
  218. $service_status = pick($service_status, "/etc/init.d/${service_name} status")
  219. $service_reload = "/etc/init.d/${service_name} reload"
  220. $psql_path = pick($psql_path, "${bindir}/psql")
  221. $needs_initdb = pick($needs_initdb, true)
  222. }
  223. default: {
  224. $link_pg_config = true
  225. $psql_path = pick($psql_path, "${bindir}/psql")
  226. # Since we can't determine defaults on our own, we rely on users setting
  227. # parameters with the postgresql::globals class. Here we are checking
  228. # that the mandatory minimum is set for the module to operate.
  229. $err_prefix = "Module ${module_name} does not provide defaults for osfamily: ${::osfamily} operatingsystem: ${::operatingsystem}; please specify a value for ${module_name}::globals::"
  230. if ($needs_initdb == undef) { fail("${err_prefix}needs_initdb") }
  231. if ($service_name == undef) { fail("${err_prefix}service_name") }
  232. if ($client_package_name == undef) { fail("${err_prefix}client_package_name") }
  233. if ($server_package_name == undef) { fail("${err_prefix}server_package_name") }
  234. if ($bindir == undef) { fail("${err_prefix}bindir") }
  235. if ($datadir == undef) { fail("${err_prefix}datadir") }
  236. if ($confdir == undef) { fail("${err_prefix}confdir") }
  237. }
  238. }
  239. $validcon_script_path = pick($validcon_script_path, '/usr/local/bin/validate_postgresql_connection.sh')
  240. $initdb_path = pick($initdb_path, "${bindir}/initdb")
  241. $pg_hba_conf_path = pick($pg_hba_conf_path, "${confdir}/pg_hba.conf")
  242. $pg_hba_conf_defaults = pick($pg_hba_conf_defaults, true)
  243. $pg_ident_conf_path = pick($pg_ident_conf_path, "${confdir}/pg_ident.conf")
  244. $postgresql_conf_path = pick($postgresql_conf_path, "${confdir}/postgresql.conf")
  245. $recovery_conf_path = pick($recovery_conf_path, "${datadir}/recovery.conf")
  246. $default_database = pick($default_database, 'postgres')
  247. }