freighthop 0.0.6 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (270) hide show
  1. data/Puppetfile +1 -0
  2. data/Puppetfile.lock +3 -0
  3. data/Vagrantfile +1 -1
  4. data/bin/fh +2 -78
  5. data/lib/freighthop/cli/help.rb +69 -0
  6. data/lib/freighthop/cli/ssh.rb +46 -0
  7. data/lib/freighthop/cli/vagrant.rb +26 -0
  8. data/lib/freighthop/cli.rb +40 -0
  9. data/lib/freighthop/config.rb +4 -0
  10. data/lib/freighthop/vagrant_env.rb +24 -0
  11. data/lib/freighthop/version.rb +1 -1
  12. data/lib/freighthop.rb +7 -4
  13. data/local_modules/freighthop/manifests/database/mysql.pp +20 -0
  14. data/local_modules/freighthop/manifests/database/postgres.pp +6 -6
  15. data/local_modules/freighthop/manifests/database.pp +6 -8
  16. data/local_modules/freighthop/manifests/init.pp +1 -8
  17. data/local_modules/freighthop/manifests/params.pp +0 -3
  18. data/modules/apt/CHANGELOG +12 -2
  19. data/modules/apt/Gemfile +6 -5
  20. data/modules/apt/Gemfile.lock +40 -5
  21. data/modules/apt/Modulefile +1 -1
  22. data/modules/apt/README.md +2 -1
  23. data/modules/apt/Rakefile +1 -0
  24. data/modules/apt/manifests/init.pp +4 -1
  25. data/modules/apt/manifests/ppa.pp +1 -1
  26. data/modules/apt/manifests/update.pp +1 -0
  27. data/modules/apt/metadata.json +21 -13
  28. data/modules/apt/spec/defines/ppa_spec.rb +3 -3
  29. data/modules/apt/spec/defines/source_spec.rb +2 -2
  30. data/modules/apt/spec/spec_helper_system.rb +30 -0
  31. data/modules/apt/spec/system/apt_builddep_spec.rb +38 -0
  32. data/modules/apt/spec/system/apt_key_spec.rb +53 -0
  33. data/modules/apt/spec/system/apt_ppa_spec.rb +59 -0
  34. data/modules/apt/spec/system/apt_source_spec.rb +51 -0
  35. data/modules/apt/spec/system/basic_spec.rb +10 -0
  36. data/modules/apt/spec/system/class_spec.rb +20 -0
  37. data/modules/apt/templates/source.list.erb +2 -2
  38. data/modules/freighthop/manifests/database/mysql.pp +20 -0
  39. data/modules/freighthop/manifests/database/postgres.pp +6 -6
  40. data/modules/freighthop/manifests/database.pp +6 -8
  41. data/modules/freighthop/manifests/init.pp +1 -8
  42. data/modules/freighthop/manifests/params.pp +0 -3
  43. data/modules/mysql/CHANGELOG +403 -0
  44. data/modules/mysql/Gemfile +24 -0
  45. data/modules/mysql/Gemfile.lock +129 -0
  46. data/modules/mysql/LICENSE +201 -0
  47. data/modules/mysql/Modulefile +9 -0
  48. data/modules/mysql/README.md +492 -0
  49. data/modules/mysql/Rakefile +2 -0
  50. data/modules/mysql/TODO +8 -0
  51. data/modules/mysql/files/mysqltuner.pl +966 -0
  52. data/modules/mysql/lib/puppet/parser/functions/mysql_deepmerge.rb +52 -0
  53. data/modules/mysql/lib/puppet/parser/functions/mysql_password.rb +15 -0
  54. data/modules/mysql/lib/puppet/parser/functions/mysql_strip_hash.rb +21 -0
  55. data/modules/mysql/lib/puppet/provider/database/mysql.rb +52 -0
  56. data/modules/mysql/lib/puppet/provider/database_grant/mysql.rb +210 -0
  57. data/modules/mysql/lib/puppet/provider/database_user/mysql.rb +76 -0
  58. data/modules/mysql/lib/puppet/provider/mysql.rb +67 -0
  59. data/modules/mysql/lib/puppet/provider/mysql_database/mysql.rb +68 -0
  60. data/modules/mysql/lib/puppet/provider/mysql_grant/mysql.rb +115 -0
  61. data/modules/mysql/lib/puppet/provider/mysql_user/mysql.rb +115 -0
  62. data/modules/mysql/lib/puppet/type/database.rb +21 -0
  63. data/modules/mysql/lib/puppet/type/database_grant.rb +79 -0
  64. data/modules/mysql/lib/puppet/type/database_user.rb +31 -0
  65. data/modules/mysql/lib/puppet/type/mysql_database.rb +22 -0
  66. data/modules/mysql/lib/puppet/type/mysql_grant.rb +72 -0
  67. data/modules/mysql/lib/puppet/type/mysql_user.rb +45 -0
  68. data/modules/mysql/manifests/backup.pp +31 -0
  69. data/modules/mysql/manifests/bindings/java.pp +10 -0
  70. data/modules/mysql/manifests/bindings/perl.pp +10 -0
  71. data/modules/mysql/manifests/bindings/php.pp +10 -0
  72. data/modules/mysql/manifests/bindings/python.pp +10 -0
  73. data/modules/mysql/manifests/bindings/ruby.pp +10 -0
  74. data/modules/mysql/manifests/bindings.pp +33 -0
  75. data/modules/mysql/manifests/client/install.pp +8 -0
  76. data/modules/mysql/manifests/client.pp +27 -0
  77. data/modules/mysql/manifests/db.pp +59 -0
  78. data/modules/mysql/manifests/init.pp +100 -0
  79. data/modules/mysql/manifests/params.pp +230 -0
  80. data/modules/mysql/manifests/server/account_security.pp +22 -0
  81. data/modules/mysql/manifests/server/backup.pp +56 -0
  82. data/modules/mysql/manifests/server/config.pp +31 -0
  83. data/modules/mysql/manifests/server/install.pp +9 -0
  84. data/modules/mysql/manifests/server/monitor.pp +24 -0
  85. data/modules/mysql/manifests/server/mysqltuner.pp +9 -0
  86. data/modules/mysql/manifests/server/providers.pp +8 -0
  87. data/modules/mysql/manifests/server/root_password.pp +21 -0
  88. data/modules/mysql/manifests/server/service.pp +19 -0
  89. data/modules/mysql/manifests/server.pp +69 -0
  90. data/modules/mysql/metadata.json +289 -0
  91. data/modules/mysql/spec/classes/mysql_bindings_spec.rb +58 -0
  92. data/modules/mysql/spec/classes/mysql_client_spec.rb +16 -0
  93. data/modules/mysql/spec/classes/mysql_server_account_security_spec.rb +41 -0
  94. data/modules/mysql/spec/classes/mysql_server_backup_spec.rb +112 -0
  95. data/modules/mysql/spec/classes/mysql_server_monitor_spec.rb +31 -0
  96. data/modules/mysql/spec/classes/mysql_server_mysqltuner_spec.rb +5 -0
  97. data/modules/mysql/spec/classes/mysql_server_spec.rb +162 -0
  98. data/modules/mysql/spec/defines/mysql_db_spec.rb +51 -0
  99. data/modules/mysql/spec/spec.opts +6 -0
  100. data/modules/mysql/spec/spec_helper.rb +5 -0
  101. data/modules/mysql/spec/spec_helper_system.rb +28 -0
  102. data/modules/mysql/spec/system/mysql_account_delete_spec.rb +35 -0
  103. data/modules/mysql/spec/system/mysql_backup_spec.rb +77 -0
  104. data/modules/mysql/spec/system/mysql_bindings_spec.rb +90 -0
  105. data/modules/mysql/spec/system/mysql_db_spec.rb +61 -0
  106. data/modules/mysql/spec/system/mysql_server_monitor_spec.rb +30 -0
  107. data/modules/mysql/spec/system/mysql_server_root_password_spec.rb +71 -0
  108. data/modules/mysql/spec/system/mysql_server_spec.rb +85 -0
  109. data/modules/mysql/spec/system/types/mysql_grant_spec.rb +314 -0
  110. data/modules/mysql/spec/system/types/mysql_user_spec.rb +35 -0
  111. data/modules/mysql/spec/unit/mysql_password_spec.rb +27 -0
  112. data/modules/mysql/spec/unit/puppet/functions/mysql_deepmerge_spec.rb +77 -0
  113. data/modules/mysql/spec/unit/puppet/provider/database/mysql_spec.rb +86 -0
  114. data/modules/mysql/spec/unit/puppet/provider/database_grant/mysql_spec.rb +95 -0
  115. data/modules/mysql/spec/unit/puppet/provider/database_user/mysql_spec.rb +119 -0
  116. data/modules/mysql/spec/unit/puppet/provider/mysql_database/mysql_spec.rb +118 -0
  117. data/modules/mysql/spec/unit/puppet/provider/mysql_user/mysql_spec.rb +130 -0
  118. data/modules/mysql/spec/unit/puppet/type/mysql_database_spec.rb +29 -0
  119. data/modules/mysql/spec/unit/puppet/type/mysql_user_spec.rb +30 -0
  120. data/modules/mysql/templates/my.cnf.erb +17 -0
  121. data/modules/mysql/templates/my.cnf.pass.erb +7 -0
  122. data/modules/mysql/templates/my.conf.cnf.erb +17 -0
  123. data/modules/mysql/templates/mysqlbackup.sh.erb +57 -0
  124. data/modules/mysql/tests/backup.pp +8 -0
  125. data/modules/mysql/tests/bindings.pp +3 -0
  126. data/modules/mysql/tests/init.pp +1 -0
  127. data/modules/mysql/tests/java.pp +1 -0
  128. data/modules/mysql/tests/mysql_database.pp +12 -0
  129. data/modules/mysql/tests/mysql_grant.pp +5 -0
  130. data/modules/mysql/tests/mysql_user.pp +23 -0
  131. data/modules/mysql/tests/perl.pp +1 -0
  132. data/modules/mysql/tests/python.pp +1 -0
  133. data/modules/mysql/tests/ruby.pp +1 -0
  134. data/modules/mysql/tests/server/account_security.pp +4 -0
  135. data/modules/mysql/tests/server/config.pp +11 -0
  136. data/modules/mysql/tests/server.pp +3 -0
  137. data/modules/postgresql/Changelog +191 -0
  138. data/modules/postgresql/Gemfile +1 -0
  139. data/modules/postgresql/Gemfile.lock +9 -0
  140. data/modules/postgresql/LICENSE +198 -12
  141. data/modules/postgresql/Modulefile +2 -2
  142. data/modules/postgresql/NOTICE +14 -0
  143. data/modules/postgresql/README.md +435 -184
  144. data/modules/postgresql/files/validate_postgresql_connection.sh +31 -0
  145. data/modules/postgresql/lib/puppet/provider/postgresql_conf/parsed.rb +37 -0
  146. data/modules/postgresql/lib/puppet/provider/postgresql_psql/ruby.rb +4 -0
  147. data/modules/postgresql/lib/puppet/type/postgresql_conf.rb +31 -0
  148. data/modules/postgresql/lib/puppet/type/postgresql_psql.rb +4 -0
  149. data/modules/postgresql/manifests/client.pp +17 -16
  150. data/modules/postgresql/manifests/globals.pp +95 -0
  151. data/modules/postgresql/manifests/lib/devel.pp +15 -0
  152. data/modules/postgresql/manifests/lib/java.pp +15 -0
  153. data/modules/postgresql/manifests/lib/python.pp +13 -0
  154. data/modules/postgresql/manifests/params.pp +127 -222
  155. data/modules/postgresql/manifests/repo/apt_postgresql_org.pp +30 -0
  156. data/modules/postgresql/manifests/repo/yum_postgresql_org.pp +38 -0
  157. data/modules/postgresql/manifests/repo.pp +22 -0
  158. data/modules/postgresql/manifests/server/config.pp +113 -0
  159. data/modules/postgresql/manifests/server/config_entry.pp +43 -0
  160. data/modules/postgresql/manifests/server/contrib.pp +27 -0
  161. data/modules/postgresql/manifests/server/database.pp +75 -0
  162. data/modules/postgresql/manifests/server/database_grant.pp +18 -0
  163. data/modules/postgresql/manifests/server/db.pp +36 -0
  164. data/modules/postgresql/manifests/server/firewall.pp +21 -0
  165. data/modules/postgresql/manifests/server/grant.pp +81 -0
  166. data/modules/postgresql/manifests/server/initdb.pp +52 -0
  167. data/modules/postgresql/manifests/server/install.pp +49 -0
  168. data/modules/postgresql/manifests/server/passwd.pp +34 -0
  169. data/modules/postgresql/manifests/server/pg_hba_rule.pp +54 -0
  170. data/modules/postgresql/manifests/server/plperl.pp +27 -0
  171. data/modules/postgresql/manifests/server/reload.pp +15 -0
  172. data/modules/postgresql/manifests/{role.pp → server/role.pp} +19 -33
  173. data/modules/postgresql/manifests/server/service.pp +40 -0
  174. data/modules/postgresql/manifests/{table_grant.pp → server/table_grant.pp} +4 -4
  175. data/modules/postgresql/manifests/server/tablespace.pp +42 -0
  176. data/modules/postgresql/manifests/server.pp +61 -83
  177. data/modules/postgresql/manifests/validate_db_connection.pp +49 -50
  178. data/modules/postgresql/metadata.json +123 -73
  179. data/modules/postgresql/spec/spec_helper_system.rb +13 -1
  180. data/modules/postgresql/spec/system/client_spec.rb +22 -0
  181. data/modules/postgresql/spec/system/common_patterns_spec.rb +53 -0
  182. data/modules/postgresql/spec/system/contrib_spec.rb +33 -0
  183. data/modules/postgresql/spec/system/lib/devel_spec.rb +22 -0
  184. data/modules/postgresql/spec/system/lib/java_spec.rb +25 -0
  185. data/modules/postgresql/spec/system/lib/python_spec.rb +24 -0
  186. data/modules/postgresql/spec/system/postgresql_psql_spec.rb +51 -0
  187. data/modules/postgresql/spec/system/server/config_entry_spec.rb +32 -0
  188. data/modules/postgresql/spec/system/server/database_grant_spec.rb +54 -0
  189. data/modules/postgresql/spec/system/server/database_spec.rb +35 -0
  190. data/modules/postgresql/spec/system/server/db_spec.rb +143 -0
  191. data/modules/postgresql/spec/system/server/grant_spec.rb +55 -0
  192. data/modules/postgresql/spec/system/server/pg_hba_rule_spec.rb +85 -0
  193. data/modules/postgresql/spec/system/server/plperl_spec.rb +29 -0
  194. data/modules/postgresql/spec/system/server/role_spec.rb +103 -0
  195. data/modules/postgresql/spec/system/server/table_grant_spec.rb +72 -0
  196. data/modules/postgresql/spec/system/server/tablespace_spec.rb +74 -0
  197. data/modules/postgresql/spec/system/server_spec.rb +217 -0
  198. data/modules/postgresql/spec/system/validate_db_connection_spec.rb +91 -0
  199. data/modules/postgresql/spec/unit/classes/client_spec.rb +27 -2
  200. data/modules/postgresql/spec/unit/classes/globals_spec.rb +28 -0
  201. data/modules/postgresql/spec/unit/classes/lib/devel_spec.rb +12 -0
  202. data/modules/postgresql/spec/unit/classes/{postgresql_java_spec.rb → lib/java_spec.rb} +9 -19
  203. data/modules/postgresql/spec/unit/classes/lib/python_spec.rb +31 -0
  204. data/modules/postgresql/spec/unit/classes/params_spec.rb +2 -1
  205. data/modules/postgresql/spec/unit/classes/repo_spec.rb +17 -0
  206. data/modules/postgresql/spec/unit/classes/server/contrib_spec.rb +42 -0
  207. data/modules/postgresql/spec/unit/classes/server/initdb_spec.rb +28 -0
  208. data/modules/postgresql/spec/unit/classes/server/plperl_spec.rb +45 -0
  209. data/modules/postgresql/spec/unit/classes/server_spec.rb +83 -2
  210. data/modules/postgresql/spec/unit/defines/server/config_entry_spec.rb +23 -0
  211. data/modules/postgresql/spec/unit/defines/server/database_grant_spec.rb +26 -0
  212. data/modules/postgresql/spec/unit/defines/server/database_spec.rb +16 -0
  213. data/modules/postgresql/spec/unit/defines/server/db_spec.rb +28 -0
  214. data/modules/postgresql/spec/unit/defines/{database_grant_spec.rb → server/grant_spec.rb} +7 -4
  215. data/modules/postgresql/spec/unit/defines/{pg_hba_rule_spec.rb → server/pg_hba_rule_spec.rb} +59 -2
  216. data/modules/postgresql/spec/unit/defines/server/role_spec.rb +23 -0
  217. data/modules/postgresql/spec/unit/defines/server/table_grant_spec.rb +27 -0
  218. data/modules/postgresql/spec/unit/defines/server/tablespace_spec.rb +23 -0
  219. data/modules/postgresql/spec/unit/defines/validate_db_connection_spec.rb +22 -9
  220. data/modules/postgresql/spec/unit/provider/postgresql_conf/parsed_spec.rb +112 -0
  221. data/modules/postgresql/spec/unit/puppet/provider/postgresql_psql/ruby_spec.rb +29 -0
  222. data/modules/postgresql/spec/unit/puppet/type/postgresql_psql_spec.rb +1 -0
  223. data/modules/postgresql/spec/unit/type/postgresql_conf_spec.rb +50 -0
  224. metadata +177 -53
  225. data/modules/postgresql/examples/init.pp +0 -1
  226. data/modules/postgresql/examples/official-postgresql-repos.pp +0 -19
  227. data/modules/postgresql/examples/postgresql_database.pp +0 -22
  228. data/modules/postgresql/examples/postgresql_db.pp +0 -30
  229. data/modules/postgresql/examples/postgresql_grant.pp +0 -14
  230. data/modules/postgresql/examples/postgresql_pg_hba_rule.pp +0 -18
  231. data/modules/postgresql/examples/postgresql_pgconf_extras.pp +0 -19
  232. data/modules/postgresql/examples/postgresql_tablespace.pp +0 -73
  233. data/modules/postgresql/examples/postgresql_user.pp +0 -28
  234. data/modules/postgresql/examples/server.pp +0 -10
  235. data/modules/postgresql/lib/facter/postgres_default_version.rb +0 -69
  236. data/modules/postgresql/manifests/config/afterservice.pp +0 -47
  237. data/modules/postgresql/manifests/config/beforeservice.pp +0 -171
  238. data/modules/postgresql/manifests/config.pp +0 -74
  239. data/modules/postgresql/manifests/contrib.pp +0 -29
  240. data/modules/postgresql/manifests/database.pp +0 -85
  241. data/modules/postgresql/manifests/database_grant.pp +0 -35
  242. data/modules/postgresql/manifests/database_user.pp +0 -60
  243. data/modules/postgresql/manifests/db.pp +0 -77
  244. data/modules/postgresql/manifests/devel.pp +0 -27
  245. data/modules/postgresql/manifests/grant.pp +0 -77
  246. data/modules/postgresql/manifests/init.pp +0 -145
  247. data/modules/postgresql/manifests/initdb.pp +0 -52
  248. data/modules/postgresql/manifests/java.pp +0 -29
  249. data/modules/postgresql/manifests/package_source/apt_postgresql_org.pp +0 -21
  250. data/modules/postgresql/manifests/package_source/yum_postgresql_org.pp +0 -30
  251. data/modules/postgresql/manifests/pg_hba.pp +0 -19
  252. data/modules/postgresql/manifests/pg_hba_rule.pp +0 -41
  253. data/modules/postgresql/manifests/plperl.pp +0 -24
  254. data/modules/postgresql/manifests/psql.pp +0 -56
  255. data/modules/postgresql/manifests/python.pp +0 -18
  256. data/modules/postgresql/manifests/tablespace.pp +0 -59
  257. data/modules/postgresql/spec/system/install_spec.rb +0 -707
  258. data/modules/postgresql/spec/system/non_defaults_spec.rb +0 -114
  259. data/modules/postgresql/spec/unit/classes/contrib_spec.rb +0 -11
  260. data/modules/postgresql/spec/unit/classes/devel_spec.rb +0 -11
  261. data/modules/postgresql/spec/unit/classes/init_spec.rb +0 -71
  262. data/modules/postgresql/spec/unit/classes/postgresql_python_spec.rb +0 -53
  263. data/modules/postgresql/spec/unit/defines/database_spec.rb +0 -14
  264. data/modules/postgresql/spec/unit/defines/database_user_spec.rb +0 -19
  265. data/modules/postgresql/spec/unit/defines/db_spec.rb +0 -20
  266. data/modules/postgresql/spec/unit/defines/pg_hba_spec.rb +0 -20
  267. data/modules/postgresql/spec/unit/defines/psql_spec.rb +0 -20
  268. data/modules/postgresql/spec/unit/defines/role_spec.rb +0 -14
  269. data/modules/postgresql/spec/unit/defines/tablespace_spec.rb +0 -19
  270. data/modules/postgresql/spec/unit/facts/postgres_default_version_spec.rb +0 -14
@@ -1,245 +1,150 @@
1
- # Class: postgresql::params
2
- #
3
- # The postgresql configuration settings.
4
- #
5
- # Parameters:
6
- #
7
- # Actions:
8
- #
9
- # Requires:
10
- #
11
- # Sample Usage:
12
- #
13
-
14
- # TODO: add real docs
15
-
16
- # This class allows you to use a newer version of postgres, rather than your
17
- # system's default version.
18
- #
19
- # If you want to do that, note that it is important that you use the '->',
20
- # or a before/require metaparameter to make sure that the `params`
21
- # class is evaluated before any of the other classes in the module.
22
- #
23
- # Also note that this class includes the ability to automatically manage
24
- # the yumrepo resource. If you'd prefer to manage the repo yourself, simply pass
25
- # 'false' or omit the 'manage_repo' parameter--it defaults to 'false'. You will
26
- # still need to use the 'params' class to specify the postgres version
27
- # number, though, in order for the other classes to be able to find the
28
- # correct paths to the postgres dirs.
29
-
30
- class postgresql::params(
31
- $version = $::postgres_default_version,
32
- $manage_package_repo = false,
33
- $package_source = undef,
34
- $locale = undef,
35
- $charset = 'UTF8',
36
- $custom_datadir = undef,
37
- $custom_confdir = undef,
38
- $custom_bindir = undef,
39
- $custom_client_package_name = undef,
40
- $custom_server_package_name = undef,
41
- $custom_contrib_package_name = undef,
42
- $custom_devel_package_name = undef,
43
- $custom_java_package_name = undef,
44
- $custom_plperl_package_name = undef,
45
- $custom_service_name = undef,
46
- $custom_user = undef,
47
- $custom_group = undef,
48
- $run_initdb = undef
49
- ) {
50
- $user = pick($custom_user, 'postgres')
51
- $group = pick($custom_group, 'postgres')
52
- $ip_mask_deny_postgres_user = '0.0.0.0/0'
53
- $ip_mask_allow_all_users = '127.0.0.1/32'
54
- $listen_addresses = 'localhost'
55
- $ipv4acls = []
56
- $ipv6acls = []
57
- $manage_pg_hba_conf = true
58
- # TODO: figure out a way to make this not platform-specific
59
- $manage_redhat_firewall = false
60
-
61
- if ($manage_package_repo) {
62
- case $::osfamily {
63
- 'RedHat': {
64
- $rh_pkg_source = pick($package_source, 'yum.postgresql.org')
65
-
66
- case $rh_pkg_source {
67
- 'yum.postgresql.org': {
68
- class { 'postgresql::package_source::yum_postgresql_org':
69
- version => $version
70
- }
71
- }
72
-
73
- default: {
74
- fail("Unsupported package source '${rh_pkg_source}' for ${::osfamily} OS family. Currently the only supported source is 'yum.postgresql.org'")
75
- }
76
- }
77
- }
78
-
79
- 'Debian': {
80
- class { 'postgresql::package_source::apt_postgresql_org': }
81
- }
82
-
83
- default: {
84
- fail("Unsupported osfamily for manage_package_repo: ${::osfamily} operatingsystem: ${::operatingsystem}, module ${module_name} currently only supports managing repos for osfamily RedHat and Debian")
85
- }
86
- }
87
- }
88
-
89
-
90
- # This is a bit hacky, but if the puppet nodes don't have pluginsync enabled,
91
- # they will fail with a not-so-helpful error message. Here we are explicitly
92
- # verifying that the custom fact exists (which implies that pluginsync is
93
- # enabled and succeeded). If not, we fail with a hint that tells the user
94
- # that pluginsync might not be enabled. Ideally this would be handled directly
95
- # in puppet.
96
- if ($::postgres_default_version == undef) {
97
- fail('No value for postgres_default_version facter fact; it\'s possible that you don\'t have pluginsync enabled.')
98
- }
99
-
100
- case $::operatingsystem {
101
- default: {
102
- $service_provider = undef
103
- }
104
- }
1
+ # PRIVATE CLASS: do not use directly
2
+ class postgresql::params inherits postgresql::globals {
3
+ $ensure = true
4
+ $version = $globals_version
5
+ $listen_addresses = 'localhost'
6
+ $ip_mask_deny_postgres_user = '0.0.0.0/0'
7
+ $ip_mask_allow_all_users = '127.0.0.1/32'
8
+ $ipv4acls = []
9
+ $ipv6acls = []
10
+ $user = pick($user, 'postgres')
11
+ $group = pick($group, 'postgres')
12
+ $encoding = $encoding
13
+ $locale = $locale
14
+ $service_provider = $service_provider
15
+ $manage_firewall = $manage_firewall
16
+ $manage_pg_hba_conf = pick($manage_pg_hba_conf, true)
105
17
 
106
18
  # Amazon Linux's OS Family is 'Linux', operating system 'Amazon'.
107
19
  case $::osfamily {
108
20
  'RedHat', 'Linux': {
109
- $needs_initdb = pick($run_initdb, true)
110
- $firewall_supported = true
111
- $persist_firewall_command = '/sbin/iptables-save > /etc/sysconfig/iptables'
112
-
113
- if $version == $::postgres_default_version {
114
- $client_package_name = pick($custom_client_package_name, 'postgresql')
115
- $server_package_name = pick($custom_server_package_name, 'postgresql-server')
116
- $contrib_package_name = pick($custom_contrib_package_name,'postgresql-contrib')
117
- $devel_package_name = pick($custom_devel_package_name, 'postgresql-devel')
118
- $java_package_name = pick($custom_java_package_name, 'postgresql-jdbc')
119
- $plperl_package_name = pick($custom_plperl_package_name, 'postgresql-plperl')
120
- $service_name = pick($custom_service_name, 'postgresql')
121
- $bindir = pick($custom_bindir, '/usr/bin')
122
- $datadir = pick($custom_datadir, '/var/lib/pgsql/data')
123
- $confdir = pick($custom_confdir, $datadir)
21
+ $needs_initdb = pick($needs_initdb, true)
22
+ $firewall_supported = pick($firewall_supported, true)
23
+
24
+ if $version == $default_version {
25
+ $client_package_name = pick($client_package_name, 'postgresql')
26
+ $server_package_name = pick($server_package_name, 'postgresql-server')
27
+ $contrib_package_name = pick($contrib_package_name,'postgresql-contrib')
28
+ $devel_package_name = pick($devel_package_name, 'postgresql-devel')
29
+ $java_package_name = pick($java_package_name, 'postgresql-jdbc')
30
+ $plperl_package_name = pick($plperl_package_name, 'postgresql-plperl')
31
+ $service_name = pick($service_name, 'postgresql')
32
+ $bindir = pick($bindir, '/usr/bin')
33
+ $datadir = $::operatingsystem ? {
34
+ 'Amazon' => pick($datadir, '/var/lib/pgsql9/data'),
35
+ default => pick($datadir, '/var/lib/pgsql/data'),
36
+ }
37
+ $confdir = pick($confdir, $datadir)
124
38
  } else {
125
- $version_parts = split($version, '[.]')
126
- $package_version = "${version_parts[0]}${version_parts[1]}"
127
- $client_package_name = pick($custom_client_package_name, "postgresql${package_version}")
128
- $server_package_name = pick($custom_server_package_name, "postgresql${package_version}-server")
129
- $contrib_package_name = pick($custom_contrib_package_name,"postgresql${package_version}-contrib")
130
- $devel_package_name = pick($custom_devel_package_name, "postgresql${package_version}-devel")
131
- $java_package_name = pick($custom_java_package_name, "postgresql${package_version}-jdbc")
132
- $plperl_package_name = pick($custom_plperl_package_name, "postgresql${package_version}-plperl")
133
- $service_name = pick($custom_service_name, "postgresql-${version}")
134
- $bindir = pick($custom_bindir, "/usr/pgsql-${version}/bin")
135
- $datadir = pick($custom_datadir, "/var/lib/pgsql/${version}/data")
136
- $confdir = pick($custom_confdir, $datadir)
39
+ $version_parts = split($version, '[.]')
40
+ $package_version = "${version_parts[0]}${version_parts[1]}"
41
+ $client_package_name = pick($client_package_name, "postgresql${package_version}")
42
+ $server_package_name = pick($server_package_name, "postgresql${package_version}-server")
43
+ $contrib_package_name = pick($contrib_package_name,"postgresql${package_version}-contrib")
44
+ $devel_package_name = pick($devel_package_name, "postgresql${package_version}-devel")
45
+ $java_package_name = pick($java_package_name, "postgresql${package_version}-jdbc")
46
+ $plperl_package_name = pick($plperl_package_name, "postgresql${package_version}-plperl")
47
+ $service_name = pick($service_name, "postgresql-${version}")
48
+ $bindir = pick($bindir, "/usr/pgsql-${version}/bin")
49
+ $datadir = $::operatingsystem ? {
50
+ 'Amazon' => pick($datadir, "/var/lib/pgsql9/${version}/data"),
51
+ default => pick($datadir, "/var/lib/pgsql/${version}/data"),
52
+ }
53
+ $confdir = pick($confdir, $datadir)
137
54
  }
55
+ $psql_path = pick($psql_path, "${bindir}/psql")
138
56
 
139
- $service_status = undef
140
- $python_package_name = 'python-psycopg2'
57
+ $service_status = $service_status
58
+ $python_package_name = pick($python_package_name, 'python-psycopg2')
59
+ }
60
+
61
+ 'Archlinux': {
62
+ # Based on the existing version of the firewall module, this is normally
63
+ # true for Archlinux, but archlinux users want more control.
64
+ # so they can set it themself
65
+ $firewall_supported = pick($firewall_supported, true)
66
+ $needs_initdb = pick($needs_initdb, true)
67
+
68
+ # Archlinux doesn't have a client-package but has a libs package which
69
+ # pulls in postgresql server
70
+ $client_package_name = pick($client_package_name, 'postgresql')
71
+ $server_package_name = pick($server_package_name, 'postgresql-libs')
72
+ $java_package_name = pick($java_package_name, 'postgresql-jdbc')
73
+ # Archlinux doesn't have develop packages
74
+ $devel_package_name = pick($devel_package_name, 'postgresql-devel')
75
+ # Archlinux does have postgresql-contrib but it isn't maintained
76
+ $contrib_package_name = pick($contrib_package_name,'undef')
77
+ # Archlinux postgresql package provides plperl
78
+ $plperl_package_name = pick($plperl_package_name, 'undef')
79
+ $service_name = pick($service_name, 'postgresql')
80
+ $bindir = pick($bindir, '/usr/bin')
81
+ $datadir = pick($datadir, '/var/lib/postgres/data')
82
+ $confdir = pick($confdir, $datadir)
83
+ $psql_path = pick($psql_path, "${bindir}/psql")
84
+
85
+ $service_status = $service_status
86
+ $python_package_name = pick($python_package_name, 'python-psycopg2')
141
87
  }
142
88
 
143
89
  'Debian': {
144
- $firewall_supported = false
145
- # TODO: not exactly sure yet what the right thing to do for Debian/Ubuntu is.
146
- #$persist_firewall_command = '/sbin/iptables-save > /etc/iptables/rules.v4'
147
90
 
148
91
  if $manage_package_repo == true {
149
- $needs_initdb = pick($run_initdb, true)
150
- $service_name = pick($custom_service_name, 'postgresql')
92
+ $needs_initdb = pick($needs_initdb, true)
93
+ $service_name = pick($service_name, 'postgresql')
151
94
  } else {
152
- $needs_initdb = pick($run_initdb, false)
153
- case $::operatingsystem {
154
- 'Debian': {
155
- $service_name = pick($custom_service_name, 'postgresql')
156
- }
157
- 'Ubuntu': {
158
- # thanks, ubuntu
159
- if($::lsbmajdistrelease == '10') {
160
- $service_name = pick($custom_service_name, "postgresql-${version}")
161
- } else {
162
- $service_name = pick($custom_service_name, 'postgresql')
163
- }
164
- }
165
- default: { }
95
+ $needs_initdb = pick($needs_initdb, false)
96
+ $service_name = $::operatingsystem ? {
97
+ 'Debian' => pick($service_name, 'postgresql'),
98
+ 'Ubuntu' => $::lsbmajdistrelease ? {
99
+ '10' => pick($service_name, "postgresql-${version}"),
100
+ default => pick($service_name, 'postgresql'),
101
+ },
102
+ default => undef
166
103
  }
167
104
  }
168
105
 
169
- $client_package_name = pick($custom_client_package_name, "postgresql-client-${version}")
170
- $server_package_name = pick($custom_server_package_name, "postgresql-${version}")
171
- $contrib_package_name = pick($custom_contrib_package_name, "postgresql-contrib-${version}")
172
- $devel_package_name = pick($custom_devel_package_name, 'libpq-dev')
173
- $java_package_name = pick($custom_java_package_name, 'libpostgresql-jdbc-java')
174
- $bindir = pick($custom_bindir, "/usr/lib/postgresql/${version}/bin")
175
- $datadir = pick($custom_datadir, "/var/lib/postgresql/${version}/main")
176
- $confdir = pick($custom_confdir, "/etc/postgresql/${version}/main")
177
- $service_status = "/etc/init.d/${service_name} status | /bin/egrep -q 'Running clusters: .+|online'"
178
- $python_package_name = 'python-psycopg2'
179
- $plperl_package_name = "postgresql-plperl-${version}"
106
+ $client_package_name = pick($client_package_name, "postgresql-client-${version}")
107
+ $server_package_name = pick($server_package_name, "postgresql-${version}")
108
+ $contrib_package_name = pick($contrib_package_name, "postgresql-contrib-${version}")
109
+ $devel_package_name = pick($devel_package_name, 'libpq-dev')
110
+ $java_package_name = pick($java_package_name, 'libpostgresql-jdbc-java')
111
+ $plperl_package_name = pick($plperl_package_name, "postgresql-plperl-${version}")
112
+ $python_package_name = pick($python_package_name, 'python-psycopg2')
113
+
114
+ $bindir = pick($bindir, "/usr/lib/postgresql/${version}/bin")
115
+ $datadir = pick($datadir, "/var/lib/postgresql/${version}/main")
116
+ $confdir = pick($confdir, "/etc/postgresql/${version}/main")
117
+ $service_status = pick($service_status, "/etc/init.d/${service_name} status | /bin/egrep -q 'Running clusters: .+|online'")
118
+ $psql_path = pick($psql_path, "/usr/bin/psql")
119
+
120
+ $firewall_supported = pick($firewall_supported, true)
180
121
  }
181
122
 
182
123
  default: {
183
-
184
- $err_msg_prefix = "Module ${module_name} does not provide defaults for osfamily: ${::osfamily} operatingsystem: ${::operatingsystem}; please specify a value for ${module_name}::params::"
185
-
186
- if ($run_initdb != undef) {
187
- $needs_initdb = $run_initdb
188
- } else {
189
- fail("${err_msg_prefix}run_initdb")
190
- }
191
-
192
- $firewall_supported = false
193
-
194
- if ($custom_service_name) {
195
- $service_name = $custom_service_name
196
- } else {
197
- fail("${err_msg_prefix}custom_service_name")
198
- }
199
-
200
- if ($custom_client_package_name) {
201
- $client_package_name = $custom_client_package_name
202
- } else {
203
- fail("${err_msg_prefix}custom_client_package_name")
204
- }
205
-
206
- if ($custom_server_package_name) {
207
- $server_package_name = $custom_server_package_name
208
- } else {
209
- fail("${err_msg_prefix}custom_server_package_name")
210
- }
211
-
212
-
213
- $contrib_package_name = $custom_contrib_package_name
214
- $devel_package_name = $custom_devel_package_name
215
- $java_package_name = $custom_java_package_name
216
-
217
- if ($custom_bindir) {
218
- $bindir = $custom_bindir
219
- } else {
220
- fail("${err_msg_prefix}custom_bindir")
221
- }
222
-
223
- if ($custom_datadir) {
224
- $datadir = $custom_datadir
225
- } else {
226
- fail("${err_msg_prefix}custom_datadir")
227
- }
228
-
229
- if ($custom_confdir) {
230
- $confdir = $custom_confdir
231
- } else {
232
- fail("${err_msg_prefix}custom_confdir")
233
- }
234
-
235
- $service_status = undef
124
+ # Based on the existing version of the firewall module, this is normally
125
+ # false for other OS, but this allows an escape hatch to override it.
126
+ $firewall_supported = pick($firewall_supported, false)
127
+
128
+ $psql_path = pick($psql_path, "${bindir}/psql")
129
+
130
+ # Since we can't determine defaults on our own, we rely on users setting
131
+ # parameters with the postgresql::globals class. Here we are checking
132
+ # that the mandatory minimum is set for the module to operate.
133
+ $err_prefix = "Module ${module_name} does not provide defaults for osfamily: ${::osfamily} operatingsystem: ${::operatingsystem}; please specify a value for ${module_name}::globals::"
134
+ if ($needs_initdb == undef) { fail("${err_prefix}needs_initdb") }
135
+ if ($service_name == undef) { fail("${err_prefix}service_name") }
136
+ if ($client_package_name == undef) { fail("${err_prefix}client_package_name") }
137
+ if ($server_package_name == undef) { fail("${err_prefix}server_package_name") }
138
+ if ($bindir == undef) { fail("${err_prefix}bindir") }
139
+ if ($datadir == undef) { fail("${err_prefix}datadir") }
140
+ if ($confdir == undef) { fail("${err_prefix}confdir") }
236
141
  }
237
142
  }
238
143
 
239
- $initdb_path = "${bindir}/initdb"
240
- $createdb_path = "${bindir}/createdb"
241
- $psql_path = "${bindir}/psql"
242
- $pg_hba_conf_path = "${confdir}/pg_hba.conf"
243
- $postgresql_conf_path = "${confdir}/postgresql.conf"
244
-
144
+ $initdb_path = pick($initdb_path, "${bindir}/initdb")
145
+ $createdb_path = pick($createdb_path, "${bindir}/createdb")
146
+ $pg_hba_conf_path = pick($pg_hba_conf_path, "${confdir}/pg_hba.conf")
147
+ $pg_hba_conf_defaults = pick($pg_hba_conf_defaults, true)
148
+ $postgresql_conf_path = pick($postgresql_conf_path, "${confdir}/postgresql.conf")
149
+ $default_database = pick($default_database, 'postgres')
245
150
  }
@@ -0,0 +1,30 @@
1
+ # PRIVATE CLASS: do not use directly
2
+ class postgresql::repo::apt_postgresql_org inherits postgresql::repo {
3
+ if($ensure == 'present' or $ensure == true) {
4
+ # Here we have tried to replicate the instructions on the PostgreSQL site:
5
+ #
6
+ # http://www.postgresql.org/download/linux/debian/
7
+ #
8
+ apt::pin { 'apt.postgresql.org':
9
+ originator => 'apt.postgresql.org',
10
+ priority => 500,
11
+ }->
12
+ apt::source { 'apt.postgresql.org':
13
+ location => 'http://apt.postgresql.org/pub/repos/apt/',
14
+ release => "${::lsbdistcodename}-pgdg",
15
+ repos => "main ${version}",
16
+ key => 'ACCC4CF8',
17
+ key_source => 'http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc',
18
+ include_src => false,
19
+ }
20
+
21
+ Apt::Source['apt.postgresql.org']->Package<|tag == 'postgresql'|>
22
+ } else {
23
+ apt::source { 'apt.postgresql.org':
24
+ ensure => absent,
25
+ }
26
+ apt::pin { 'apt.postgresql.org':
27
+ ensure => absent,
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,38 @@
1
+ # PRIVATE CLASS: do not use directly
2
+ class postgresql::repo::yum_postgresql_org inherits postgresql::repo {
3
+ $version_parts = split($version, '[.]')
4
+ $package_version = "${version_parts[0]}${version_parts[1]}"
5
+ $gpg_key_path = "/etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-${package_version}"
6
+
7
+ if ($ensure == 'present' or $ensure == true) {
8
+ file { $gpg_key_path:
9
+ source => 'puppet:///modules/postgresql/RPM-GPG-KEY-PGDG',
10
+ before => Yumrepo['yum.postgresql.org']
11
+ }
12
+
13
+ if($::operatingsystem == 'Fedora') {
14
+ $label1 = 'fedora'
15
+ $label2 = $label1
16
+ } else {
17
+ $label1 = 'redhat'
18
+ $label2 = 'rhel'
19
+ }
20
+
21
+ yumrepo { 'yum.postgresql.org':
22
+ descr => "PostgreSQL ${version} \$releasever - \$basearch",
23
+ baseurl => "http://yum.postgresql.org/${version}/${label1}/${label2}-\$releasever-\$basearch",
24
+ enabled => 1,
25
+ gpgcheck => 1,
26
+ gpgkey => "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-${package_version}",
27
+ }
28
+
29
+ Yumrepo['yum.postgresql.org'] -> Package<|tag == 'postgresql'|>
30
+ } else {
31
+ yumrepo { 'yum.postgresql.org':
32
+ enabled => absent,
33
+ }->
34
+ file { $gpg_key_path:
35
+ ensure => absent,
36
+ }
37
+ }
38
+ }
@@ -0,0 +1,22 @@
1
+ # PRIVATE CLASS: do not use directly
2
+ class postgresql::repo (
3
+ $ensure = $postgresql::params::ensure,
4
+ $version = undef
5
+ ) inherits postgresql::params {
6
+ case $::osfamily {
7
+ 'RedHat', 'Linux': {
8
+ if $version == undef {
9
+ fail("The parameter 'version' for 'postgresql::repo' is undefined. You must always define it when osfamily == Redhat or Linux")
10
+ }
11
+ class { 'postgresql::repo::yum_postgresql_org': }
12
+ }
13
+
14
+ 'Debian': {
15
+ class { 'postgresql::repo::apt_postgresql_org': }
16
+ }
17
+
18
+ default: {
19
+ fail("Unsupported managed repository for osfamily: ${::osfamily}, operatingsystem: ${::operatingsystem}, module ${module_name} currently only supports managing repos for osfamily RedHat and Debian")
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,113 @@
1
+ # PRIVATE CLASS: do not call directly
2
+ class postgresql::server::config {
3
+ $ensure = $postgresql::server::ensure
4
+ $ip_mask_deny_postgres_user = $postgresql::server::ip_mask_deny_postgres_user
5
+ $ip_mask_allow_all_users = $postgresql::server::ip_mask_allow_all_users
6
+ $listen_addresses = $postgresql::server::listen_addresses
7
+ $ipv4acls = $postgresql::server::ipv4acls
8
+ $ipv6acls = $postgresql::server::ipv6acls
9
+ $pg_hba_conf_path = $postgresql::server::pg_hba_conf_path
10
+ $postgresql_conf_path = $postgresql::server::postgresql_conf_path
11
+ $pg_hba_conf_defaults = $postgresql::server::pg_hba_conf_defaults
12
+ $user = $postgresql::server::user
13
+ $group = $postgresql::server::group
14
+ $version = $postgresql::server::version
15
+ $manage_pg_hba_conf = $postgresql::server::manage_pg_hba_conf
16
+
17
+ File {
18
+ owner => $user,
19
+ group => $group,
20
+ }
21
+
22
+ if ($ensure == 'present' or $ensure == true) {
23
+
24
+ if ($manage_pg_hba_conf == true) {
25
+ # Prepare the main pg_hba file
26
+ concat { $pg_hba_conf_path:
27
+ owner => 0,
28
+ group => $group,
29
+ mode => '0640',
30
+ warn => true,
31
+ notify => Class['postgresql::server::reload'],
32
+ }
33
+
34
+ if $pg_hba_conf_defaults {
35
+ Postgresql::Server::Pg_hba_rule {
36
+ database => 'all',
37
+ user => 'all',
38
+ }
39
+
40
+ # Lets setup the base rules
41
+ $local_auth_option = $version ? {
42
+ '8.1' => 'sameuser',
43
+ default => undef,
44
+ }
45
+ postgresql::server::pg_hba_rule { 'local access as postgres user':
46
+ type => 'local',
47
+ user => $user,
48
+ auth_method => 'ident',
49
+ auth_option => $local_auth_option,
50
+ order => '001',
51
+ }
52
+ postgresql::server::pg_hba_rule { 'local access to database with same name':
53
+ type => 'local',
54
+ auth_method => 'ident',
55
+ auth_option => $local_auth_option,
56
+ order => '002',
57
+ }
58
+ postgresql::server::pg_hba_rule { 'allow localhost TCP access to postgresql user':
59
+ type => 'host',
60
+ user => $user,
61
+ address => '127.0.0.1/32',
62
+ auth_method => 'md5',
63
+ order => '003',
64
+ }
65
+ postgresql::server::pg_hba_rule { 'deny access to postgresql user':
66
+ type => 'host',
67
+ user => $user,
68
+ address => $ip_mask_deny_postgres_user,
69
+ auth_method => 'reject',
70
+ order => '004',
71
+ }
72
+
73
+ # ipv4acls are passed as an array of rule strings, here we transform
74
+ # them into a resources hash, and pass the result to create_resources
75
+ $ipv4acl_resources = postgresql_acls_to_resources_hash($ipv4acls,
76
+ 'ipv4acls', 10)
77
+ create_resources('postgresql::server::pg_hba_rule', $ipv4acl_resources)
78
+
79
+ postgresql::server::pg_hba_rule { 'allow access to all users':
80
+ type => 'host',
81
+ address => $ip_mask_allow_all_users,
82
+ auth_method => 'md5',
83
+ order => '100',
84
+ }
85
+ postgresql::server::pg_hba_rule { 'allow access to ipv6 localhost':
86
+ type => 'host',
87
+ address => '::1/128',
88
+ auth_method => 'md5',
89
+ order => '101',
90
+ }
91
+
92
+ # ipv6acls are passed as an array of rule strings, here we transform
93
+ # them into a resources hash, and pass the result to create_resources
94
+ $ipv6acl_resources = postgresql_acls_to_resources_hash($ipv6acls,
95
+ 'ipv6acls', 102)
96
+ create_resources('postgresql::server::pg_hba_rule', $ipv6acl_resources)
97
+ }
98
+ }
99
+
100
+ # We must set a "listen_addresses" line in the postgresql.conf if we
101
+ # want to allow any connections from remote hosts.
102
+ postgresql::server::config_entry { 'listen_addresses':
103
+ value => $listen_addresses,
104
+ }
105
+ } else {
106
+ file { $pg_hba_conf_path:
107
+ ensure => absent,
108
+ }
109
+ file { $postgresql_conf_path:
110
+ ensure => absent,
111
+ }
112
+ }
113
+ }
@@ -0,0 +1,43 @@
1
+ # Manage a postgresql.conf entry. See README.md for more details.
2
+ define postgresql::server::config_entry (
3
+ $ensure = 'present',
4
+ $value = undef,
5
+ $path = false
6
+ ) {
7
+ $postgresql_conf_path = $postgresql::server::postgresql_conf_path
8
+
9
+ $target = $path ? {
10
+ false => $postgresql_conf_path,
11
+ default => $path,
12
+ }
13
+
14
+ case $name {
15
+ /data_directory|hba_file|ident_file|include|listen_addresses|port|max_connections|superuser_reserved_connections|unix_socket_directory|unix_socket_group|unix_socket_permissions|bonjour|bonjour_name|ssl|ssl_ciphers|shared_buffers|max_prepared_transactions|max_files_per_process|shared_preload_libraries|wal_level|wal_buffers|archive_mode|max_wal_senders|hot_standby|logging_collector|silent_mode|track_activity_query_size|autovacuum_max_workers|autovacuum_freeze_max_age|max_locks_per_transaction|max_pred_locks_per_transaction|restart_after_crash/: {
16
+ Postgresql_conf {
17
+ notify => Class['postgresql::server::service'],
18
+ before => Class['postgresql::server::reload'],
19
+ }
20
+ }
21
+
22
+ default: {
23
+ Postgresql_conf {
24
+ notify => Class['postgresql::server::reload'],
25
+ }
26
+ }
27
+ }
28
+
29
+ case $ensure {
30
+ /present|absent/: {
31
+ postgresql_conf { $name:
32
+ ensure => $ensure,
33
+ target => $target,
34
+ value => $value,
35
+ require => Class['postgresql::server::initdb'],
36
+ }
37
+ }
38
+
39
+ default: {
40
+ fail("Unknown value for ensure '${ensure}'.")
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,27 @@
1
+ # Install the contrib postgresql packaging. See README.md for more details.
2
+ class postgresql::server::contrib (
3
+ $package_name = $postgresql::params::contrib_package_name,
4
+ $package_ensure = 'present'
5
+ ) inherits postgresql::params {
6
+ validate_string($package_name)
7
+
8
+ package { 'postgresql-contrib':
9
+ ensure => $package_ensure,
10
+ name => $package_name,
11
+ tag => 'postgresql',
12
+ }
13
+
14
+ if($package_ensure == 'present' or $package_ensure == true) {
15
+ anchor { 'postgresql::server::contrib::start': }->
16
+ Class['postgresql::server::install']->
17
+ Package['postgresql-contrib']->
18
+ Class['postgresql::server::service']->
19
+ anchor { 'postgresql::server::contrib::end': }
20
+ } else {
21
+ anchor { 'postgresql::server::contrib::start': }->
22
+ Class['postgresql::server::service']->
23
+ Package['postgresql-contrib']->
24
+ Class['postgresql::server::install']->
25
+ anchor { 'postgresql::server::contrib::end': }
26
+ }
27
+ }