server_maint 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitmodules +3 -0
- data/lib/cookbooks/postgresql/.gitignore +7 -0
- data/lib/cookbooks/postgresql/.ruby-version +1 -0
- data/lib/cookbooks/postgresql/LICENSE.txt +20 -0
- data/lib/cookbooks/postgresql/README.md +588 -0
- data/lib/cookbooks/postgresql/Rakefile +35 -0
- data/lib/cookbooks/postgresql/attributes/default.rb +365 -0
- data/lib/cookbooks/postgresql/definitions/pg_database.rb +61 -0
- data/lib/cookbooks/postgresql/definitions/pg_database_extensions.rb +67 -0
- data/lib/cookbooks/postgresql/definitions/pg_user.rb +45 -0
- data/lib/cookbooks/postgresql/files/default/pgdg.pref +3 -0
- data/lib/cookbooks/postgresql/metadata.rb +22 -0
- data/lib/cookbooks/postgresql/recipes/client.rb +8 -0
- data/lib/cookbooks/postgresql/recipes/contrib.rb +8 -0
- data/lib/cookbooks/postgresql/recipes/dbg.rb +8 -0
- data/lib/cookbooks/postgresql/recipes/default.rb +50 -0
- data/lib/cookbooks/postgresql/recipes/doc.rb +8 -0
- data/lib/cookbooks/postgresql/recipes/libpq.rb +9 -0
- data/lib/cookbooks/postgresql/recipes/postgis.rb +8 -0
- data/lib/cookbooks/postgresql/recipes/server.rb +118 -0
- data/lib/cookbooks/postgresql/templates/default/environment.erb +11 -0
- data/lib/cookbooks/postgresql/templates/default/pg_ctl.conf.erb +5 -0
- data/lib/cookbooks/postgresql/templates/default/pg_hba.conf.erb +100 -0
- data/lib/cookbooks/postgresql/templates/default/pg_ident.conf.erb +46 -0
- data/lib/cookbooks/postgresql/templates/default/postgresql.conf.custom.erb +10 -0
- data/lib/cookbooks/postgresql/templates/default/postgresql.conf.standard.erb +558 -0
- data/lib/cookbooks/postgresql/templates/default/start.conf.erb +9 -0
- data/lib/cookbooks/postgresql/test/.chef/knife.rb +2 -0
- data/lib/cookbooks/postgresql/test/support/Gemfile +5 -0
- data/lib/server_maint/version.rb +1 -1
- metadata +32 -4
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
|
3
|
+
task :default => "foodcritic"
|
4
|
+
|
5
|
+
desc "Runs foodcritic linter"
|
6
|
+
task :foodcritic do
|
7
|
+
Rake::Task[:prepare_sandbox].execute
|
8
|
+
|
9
|
+
if Gem::Version.new("1.9.2") <= Gem::Version.new(RUBY_VERSION.dup)
|
10
|
+
sh "foodcritic -f any #{sandbox_path}"
|
11
|
+
else
|
12
|
+
puts "WARN: foodcritic run is skipped as Ruby #{RUBY_VERSION} is < 1.9.2."
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
desc "Runs knife cookbook test"
|
17
|
+
task :knife do
|
18
|
+
Rake::Task[:prepare_sandbox].execute
|
19
|
+
|
20
|
+
sh "bundle exec knife cookbook test cookbook -c test/.chef/knife.rb -o #{sandbox_path}/../"
|
21
|
+
end
|
22
|
+
|
23
|
+
task :prepare_sandbox do
|
24
|
+
files = %w{*.md *.rb attributes definitions libraries files providers recipes resources templates}
|
25
|
+
|
26
|
+
rm_rf sandbox_path
|
27
|
+
mkdir_p sandbox_path
|
28
|
+
cp_r Dir.glob("{#{files.join(",")}}"), sandbox_path
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def sandbox_path
|
34
|
+
File.join(File.dirname(__FILE__), %w[tmp cookbooks cookbook])
|
35
|
+
end
|
@@ -0,0 +1,365 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: postgresql
|
3
|
+
# Attributes:: default
|
4
|
+
#
|
5
|
+
# Author:: Phil Cohen <github@phlippers.net>
|
6
|
+
#
|
7
|
+
# Copyright 2012-2013, Phil Cohen
|
8
|
+
#
|
9
|
+
|
10
|
+
default["postgresql"]["version"] = "9.2"
|
11
|
+
|
12
|
+
default["postgresql"]["environment_variables"] = {}
|
13
|
+
default["postgresql"]["pg_ctl_options"] = ""
|
14
|
+
default["postgresql"]["pg_hba"] = []
|
15
|
+
default["postgresql"]["pg_hba_defaults"] = true
|
16
|
+
default["postgresql"]["pg_ident"] = []
|
17
|
+
default["postgresql"]["start"] = "auto" # auto, manual, disabled
|
18
|
+
|
19
|
+
default["postgresql"]["conf"] = {}
|
20
|
+
default["postgresql"]["initdb_options"] = "--locale=en_US.UTF-8"
|
21
|
+
|
22
|
+
#------------------------------------------------------------------------------
|
23
|
+
# POSTGIS
|
24
|
+
#------------------------------------------------------------------------------
|
25
|
+
|
26
|
+
default["postgis"]["version"] = "1.5"
|
27
|
+
|
28
|
+
#------------------------------------------------------------------------------
|
29
|
+
# FILE LOCATIONS
|
30
|
+
#------------------------------------------------------------------------------
|
31
|
+
default["postgresql"]["data_directory"] = "/var/lib/postgresql/#{node["postgresql"]["version"]}/main"
|
32
|
+
default["postgresql"]["hba_file"] = "/etc/postgresql/#{node["postgresql"]["version"]}/main/pg_hba.conf"
|
33
|
+
default["postgresql"]["ident_file"] = "/etc/postgresql/#{node["postgresql"]["version"]}/main/pg_ident.conf"
|
34
|
+
default["postgresql"]["external_pid_file"] = "/var/run/postgresql/#{node["postgresql"]["version"]}-main.pid"
|
35
|
+
|
36
|
+
|
37
|
+
#------------------------------------------------------------------------------
|
38
|
+
# CONNECTIONS AND AUTHENTICATION
|
39
|
+
#------------------------------------------------------------------------------
|
40
|
+
|
41
|
+
# connection settings
|
42
|
+
default["postgresql"]["listen_addresses"] = "localhost"
|
43
|
+
default["postgresql"]["port"] = 5432
|
44
|
+
default["postgresql"]["max_connections"] = 100
|
45
|
+
default["postgresql"]["superuser_reserved_connections"] = 3
|
46
|
+
default["postgresql"]["unix_socket_directory"] = "/var/run/postgresql"
|
47
|
+
default["postgresql"]["unix_socket_group"] = ""
|
48
|
+
default["postgresql"]["unix_socket_permissions"] = "0777"
|
49
|
+
default["postgresql"]["bonjour"] = "off"
|
50
|
+
default["postgresql"]["bonjour_name"] = ""
|
51
|
+
|
52
|
+
# security and authentication
|
53
|
+
default["postgresql"]["authentication_timeout"] = "1min"
|
54
|
+
default["postgresql"]["ssl"] = true
|
55
|
+
default["postgresql"]["ssl_ciphers"] = "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"
|
56
|
+
default["postgresql"]["ssl_renegotiation_limit"] = "512MB"
|
57
|
+
default["postgresql"]["ssl_ca_file"] = ""
|
58
|
+
default["postgresql"]["ssl_cert_file"] = "/etc/ssl/certs/ssl-cert-snakeoil.pem"
|
59
|
+
default["postgresql"]["ssl_crl_file"] = ""
|
60
|
+
default["postgresql"]["ssl_key_file"] = "/etc/ssl/private/ssl-cert-snakeoil.key"
|
61
|
+
default["postgresql"]["password_encryption"] = "on"
|
62
|
+
default["postgresql"]["db_user_namespace"] = "off"
|
63
|
+
|
64
|
+
# kerberos and gssapi
|
65
|
+
default["postgresql"]["db_user_namespace"] = "off"
|
66
|
+
default["postgresql"]["krb_server_keyfile"] = ""
|
67
|
+
default["postgresql"]["krb_srvname"] = "postgres"
|
68
|
+
default["postgresql"]["krb_caseins_users"] = "off"
|
69
|
+
|
70
|
+
# tcp keepalives
|
71
|
+
default["postgresql"]["tcp_keepalives_idle"] = 0
|
72
|
+
default["postgresql"]["tcp_keepalives_interval"] = 0
|
73
|
+
default["postgresql"]["tcp_keepalives_count"] = 0
|
74
|
+
|
75
|
+
|
76
|
+
#------------------------------------------------------------------------------
|
77
|
+
# RESOURCE USAGE (except WAL)
|
78
|
+
#------------------------------------------------------------------------------
|
79
|
+
|
80
|
+
# memory
|
81
|
+
default["postgresql"]["shared_buffers"] = "24MB"
|
82
|
+
default["postgresql"]["temp_buffers"] = "8MB"
|
83
|
+
default["postgresql"]["max_prepared_transactions"] = 0
|
84
|
+
default["postgresql"]["work_mem"] = "1MB"
|
85
|
+
default["postgresql"]["maintenance_work_mem"] = "16MB"
|
86
|
+
default["postgresql"]["max_stack_depth"] = "2MB"
|
87
|
+
|
88
|
+
# kernel resource usage
|
89
|
+
default["postgresql"]["max_files_per_process"] = 1000
|
90
|
+
default["postgresql"]["shared_preload_libraries"] = ""
|
91
|
+
|
92
|
+
# cost-based vacuum delay
|
93
|
+
default["postgresql"]["vacuum_cost_delay"] = "0ms"
|
94
|
+
default["postgresql"]["vacuum_cost_page_hit"] = 1
|
95
|
+
default["postgresql"]["vacuum_cost_page_miss"] = 10
|
96
|
+
default["postgresql"]["vacuum_cost_page_dirty"] = 20
|
97
|
+
default["postgresql"]["vacuum_cost_limit"] = 200
|
98
|
+
|
99
|
+
# background writer
|
100
|
+
default["postgresql"]["bgwriter_delay"] = "200ms"
|
101
|
+
default["postgresql"]["bgwriter_lru_maxpages"] = 100
|
102
|
+
default["postgresql"]["bgwriter_lru_multiplier"] = 2.0
|
103
|
+
|
104
|
+
# asynchronous behavior
|
105
|
+
default["postgresql"]["effective_io_concurrency"] = 1
|
106
|
+
|
107
|
+
|
108
|
+
#------------------------------------------------------------------------------
|
109
|
+
# WRITE AHEAD LOG
|
110
|
+
#------------------------------------------------------------------------------
|
111
|
+
|
112
|
+
# settings
|
113
|
+
default["postgresql"]["wal_level"] = "minimal"
|
114
|
+
default["postgresql"]["fsync"] = "on"
|
115
|
+
default["postgresql"]["synchronous_commit"] = "on"
|
116
|
+
default["postgresql"]["wal_sync_method"] = "fsync"
|
117
|
+
default["postgresql"]["full_page_writes"] = "on"
|
118
|
+
default["postgresql"]["wal_buffers"] = -1
|
119
|
+
default["postgresql"]["wal_writer_delay"] = "200ms"
|
120
|
+
default["postgresql"]["commit_delay"] = 0
|
121
|
+
default["postgresql"]["commit_siblings"] = 5
|
122
|
+
|
123
|
+
# checkpoints
|
124
|
+
default["postgresql"]["checkpoint_segments"] = 3
|
125
|
+
default["postgresql"]["checkpoint_timeout"] = "5min"
|
126
|
+
default["postgresql"]["checkpoint_completion_target"] = 0.5
|
127
|
+
default["postgresql"]["checkpoint_warning"] = "30s"
|
128
|
+
|
129
|
+
# archiving
|
130
|
+
default["postgresql"]["archive_mode"] = "off"
|
131
|
+
default["postgresql"]["archive_command"] = ""
|
132
|
+
default["postgresql"]["archive_timeout"] = 0
|
133
|
+
|
134
|
+
|
135
|
+
#------------------------------------------------------------------------------
|
136
|
+
# REPLICATION
|
137
|
+
#------------------------------------------------------------------------------
|
138
|
+
|
139
|
+
# master server
|
140
|
+
default["postgresql"]["max_wal_senders"] = 0
|
141
|
+
default["postgresql"]["wal_sender_delay"] = "1s"
|
142
|
+
default["postgresql"]["wal_keep_segments"] = 0
|
143
|
+
default["postgresql"]["vacuum_defer_cleanup_age"] = 0
|
144
|
+
default["postgresql"]["replication_timeout"] = "60s"
|
145
|
+
default["postgresql"]["synchronous_standby_names"] = ""
|
146
|
+
|
147
|
+
# standby servers
|
148
|
+
default["postgresql"]["hot_standby"] = "off"
|
149
|
+
default["postgresql"]["max_standby_archive_delay"] = "30s"
|
150
|
+
default["postgresql"]["max_standby_streaming_delay"] = "30s"
|
151
|
+
default["postgresql"]["wal_receiver_status_interval"] = "10s"
|
152
|
+
default["postgresql"]["hot_standby_feedback"] = "off"
|
153
|
+
|
154
|
+
|
155
|
+
#------------------------------------------------------------------------------
|
156
|
+
# QUERY TUNING
|
157
|
+
#------------------------------------------------------------------------------
|
158
|
+
|
159
|
+
# planner method configuration
|
160
|
+
default["postgresql"]["enable_bitmapscan"] = "on"
|
161
|
+
default["postgresql"]["enable_hashagg"] = "on"
|
162
|
+
default["postgresql"]["enable_hashjoin"] = "on"
|
163
|
+
default["postgresql"]["enable_indexscan"] = "on"
|
164
|
+
default["postgresql"]["enable_material"] = "on"
|
165
|
+
default["postgresql"]["enable_mergejoin"] = "on"
|
166
|
+
default["postgresql"]["enable_nestloop"] = "on"
|
167
|
+
default["postgresql"]["enable_seqscan"] = "on"
|
168
|
+
default["postgresql"]["enable_sort"] = "on"
|
169
|
+
default["postgresql"]["enable_tidscan"] = "on"
|
170
|
+
|
171
|
+
# planner cost constants
|
172
|
+
default["postgresql"]["seq_page_cost"] = 1.0
|
173
|
+
default["postgresql"]["random_page_cost"] = 4.0
|
174
|
+
default["postgresql"]["cpu_tuple_cost"] = 0.01
|
175
|
+
default["postgresql"]["cpu_index_tuple_cost"] = 0.005
|
176
|
+
default["postgresql"]["cpu_operator_cost"] = 0.0025
|
177
|
+
default["postgresql"]["effective_cache_size"] = "128MB"
|
178
|
+
|
179
|
+
# genetic query optimizer
|
180
|
+
default["postgresql"]["geqo"] = "on"
|
181
|
+
default["postgresql"]["geqo_threshold"] = 12
|
182
|
+
default["postgresql"]["geqo_effort"] = 5
|
183
|
+
default["postgresql"]["geqo_pool_size"] = 0
|
184
|
+
default["postgresql"]["geqo_generations"] = 0
|
185
|
+
default["postgresql"]["geqo_selection_bias"] = 2.0
|
186
|
+
default["postgresql"]["geqo_seed"] = 0.0
|
187
|
+
|
188
|
+
# other planner options
|
189
|
+
default["postgresql"]["default_statistics_target"] = 100
|
190
|
+
default["postgresql"]["constraint_exclusion"] = "partition"
|
191
|
+
default["postgresql"]["cursor_tuple_fraction"] = 0.1
|
192
|
+
default["postgresql"]["from_collapse_limit"] = 8
|
193
|
+
default["postgresql"]["join_collapse_limit"] = 8
|
194
|
+
|
195
|
+
|
196
|
+
#------------------------------------------------------------------------------
|
197
|
+
# ERROR REPORTING AND LOGGING
|
198
|
+
#------------------------------------------------------------------------------
|
199
|
+
|
200
|
+
# where to log
|
201
|
+
default["postgresql"]["log_destination"] = "stderr"
|
202
|
+
default["postgresql"]["logging_collector"] = "off"
|
203
|
+
default["postgresql"]["log_directory"] = "pg_log"
|
204
|
+
default["postgresql"]["log_filename"] = "postgresql-%Y-%m-%d_%H%M%S.log"
|
205
|
+
default["postgresql"]["log_file_mode"] = 0600
|
206
|
+
default["postgresql"]["log_truncate_on_rotation"] = "off"
|
207
|
+
default["postgresql"]["log_rotation_age"] = "1d"
|
208
|
+
default["postgresql"]["log_rotation_size"] = "10MB"
|
209
|
+
|
210
|
+
# These are relevant when logging to syslog:
|
211
|
+
default["postgresql"]["syslog_facility"] = "LOCAL0"
|
212
|
+
default["postgresql"]["syslog_ident"] = "postgres"
|
213
|
+
default["postgresql"]["silent_mode"] = "off"
|
214
|
+
|
215
|
+
# when to log
|
216
|
+
default["postgresql"]["client_min_messages"] = "notice"
|
217
|
+
default["postgresql"]["log_min_messages"] = "warning"
|
218
|
+
default["postgresql"]["log_min_error_statement"] = "error"
|
219
|
+
default["postgresql"]["log_min_duration_statement"] = -1
|
220
|
+
|
221
|
+
# what to log
|
222
|
+
default["postgresql"]["debug_print_parse"] = "off"
|
223
|
+
default["postgresql"]["debug_print_rewritten"] = "off"
|
224
|
+
default["postgresql"]["debug_print_plan"] = "off"
|
225
|
+
default["postgresql"]["debug_pretty_print"] = "on"
|
226
|
+
default["postgresql"]["log_checkpoints"] = "off"
|
227
|
+
default["postgresql"]["log_connections"] = "off"
|
228
|
+
default["postgresql"]["log_disconnections"] = "off"
|
229
|
+
default["postgresql"]["log_duration"] = "off"
|
230
|
+
default["postgresql"]["log_error_verbosity"] = "default"
|
231
|
+
default["postgresql"]["log_hostname"] = "off"
|
232
|
+
default["postgresql"]["log_line_prefix"] = "%t "
|
233
|
+
default["postgresql"]["log_lock_waits"] = "off"
|
234
|
+
default["postgresql"]["log_statement"] = "none"
|
235
|
+
default["postgresql"]["log_temp_files"] = -1
|
236
|
+
default["postgresql"]["log_timezone"] = "(defaults to server environment setting)"
|
237
|
+
|
238
|
+
|
239
|
+
#------------------------------------------------------------------------------
|
240
|
+
# RUNTIME STATISTICS
|
241
|
+
#------------------------------------------------------------------------------
|
242
|
+
|
243
|
+
# query/index statistics collector
|
244
|
+
default["postgresql"]["track_activities"] = "on"
|
245
|
+
default["postgresql"]["track_counts"] = "on"
|
246
|
+
default["postgresql"]["track_functions"] = "none"
|
247
|
+
default["postgresql"]["track_activity_query_size"] = 1024
|
248
|
+
default["postgresql"]["update_process_title"] = "on"
|
249
|
+
default["postgresql"]["stats_temp_directory"] = 'pg_stat_tmp'
|
250
|
+
|
251
|
+
# statistics monitoring
|
252
|
+
default["postgresql"]["log_parser_stats"] = "off"
|
253
|
+
default["postgresql"]["log_planner_stats"] = "off"
|
254
|
+
default["postgresql"]["log_executor_stats"] = "off"
|
255
|
+
default["postgresql"]["log_statement_stats"] = "off"
|
256
|
+
|
257
|
+
|
258
|
+
#------------------------------------------------------------------------------
|
259
|
+
# AUTOVACUUM PARAMETERS
|
260
|
+
#------------------------------------------------------------------------------
|
261
|
+
|
262
|
+
default["postgresql"]["autovacuum"] = "on"
|
263
|
+
default["postgresql"]["log_autovacuum_min_duration"] = -1
|
264
|
+
default["postgresql"]["autovacuum_max_workers"] = 3
|
265
|
+
default["postgresql"]["autovacuum_naptime"] = "1min"
|
266
|
+
default["postgresql"]["autovacuum_vacuum_threshold"] = 50
|
267
|
+
default["postgresql"]["autovacuum_analyze_threshold"] = 50
|
268
|
+
default["postgresql"]["autovacuum_vacuum_scale_factor"] = 0.2
|
269
|
+
default["postgresql"]["autovacuum_analyze_scale_factor"] = 0.1
|
270
|
+
default["postgresql"]["autovacuum_freeze_max_age"] = 200000000
|
271
|
+
default["postgresql"]["autovacuum_vacuum_cost_delay"] = "20ms"
|
272
|
+
default["postgresql"]["autovacuum_vacuum_cost_limit"] = -1
|
273
|
+
|
274
|
+
|
275
|
+
#------------------------------------------------------------------------------
|
276
|
+
# CLIENT CONNECTION DEFAULTS
|
277
|
+
#------------------------------------------------------------------------------
|
278
|
+
|
279
|
+
# statement behavior
|
280
|
+
default["postgresql"]["search_path"] = '"$user",public'
|
281
|
+
default["postgresql"]["default_tablespace"] = ""
|
282
|
+
default["postgresql"]["temp_tablespaces"] = ""
|
283
|
+
default["postgresql"]["check_function_bodies"] = "on"
|
284
|
+
default["postgresql"]["default_transaction_isolation"] = "read committed"
|
285
|
+
default["postgresql"]["default_transaction_read_only"] = "off"
|
286
|
+
default["postgresql"]["default_transaction_deferrable"] = "off"
|
287
|
+
default["postgresql"]["session_replication_role"] = "origin"
|
288
|
+
default["postgresql"]["statement_timeout"] = 0
|
289
|
+
default["postgresql"]["vacuum_freeze_min_age"] = 50000000
|
290
|
+
default["postgresql"]["vacuum_freeze_table_age"] = 150000000
|
291
|
+
default["postgresql"]["bytea_output"] = "hex"
|
292
|
+
default["postgresql"]["xmlbinary"] = "base64"
|
293
|
+
default["postgresql"]["xmloption"] = "content"
|
294
|
+
|
295
|
+
# locale and formatting
|
296
|
+
default["postgresql"]["datestyle"] = "iso, mdy"
|
297
|
+
default["postgresql"]["intervalstyle"] = "postgres"
|
298
|
+
default["postgresql"]["timezone"] = "(defaults to server environment setting)"
|
299
|
+
default["postgresql"]["timezone_abbreviations"] = "Default"
|
300
|
+
default["postgresql"]["extra_float_digits"] = 0
|
301
|
+
default["postgresql"]["client_encoding"] = "sql_ascii"
|
302
|
+
|
303
|
+
# These settings are initialized by initdb, but they can be changed.
|
304
|
+
default["postgresql"]["lc_messages"] = "en_US.UTF-8"
|
305
|
+
default["postgresql"]["lc_monetary"] = "en_US.UTF-8"
|
306
|
+
default["postgresql"]["lc_numeric"] = "en_US.UTF-8"
|
307
|
+
default["postgresql"]["lc_time"] = "en_US.UTF-8"
|
308
|
+
|
309
|
+
# default configuration for text search
|
310
|
+
default["postgresql"]["default_text_search_config"] = "pg_catalog.english"
|
311
|
+
|
312
|
+
# other defaults
|
313
|
+
default["postgresql"]["dynamic_library_path"] = "$libdir"
|
314
|
+
default["postgresql"]["local_preload_libraries"] = ""
|
315
|
+
|
316
|
+
|
317
|
+
#------------------------------------------------------------------------------
|
318
|
+
# LOCK MANAGEMENT
|
319
|
+
#------------------------------------------------------------------------------
|
320
|
+
|
321
|
+
default["postgresql"]["deadlock_timeout"] = "1s"
|
322
|
+
default["postgresql"]["max_locks_per_transaction"] = 64
|
323
|
+
default["postgresql"]["max_pred_locks_per_transaction"] = 64
|
324
|
+
|
325
|
+
|
326
|
+
#------------------------------------------------------------------------------
|
327
|
+
# VERSION/PLATFORM COMPATIBILITY
|
328
|
+
#------------------------------------------------------------------------------
|
329
|
+
|
330
|
+
# previous postgresql versions
|
331
|
+
default["postgresql"]["array_nulls"] = "on"
|
332
|
+
default["postgresql"]["backslash_quote"] = "safe_encoding"
|
333
|
+
default["postgresql"]["default_with_oids"] = "off"
|
334
|
+
default["postgresql"]["escape_string_warning"] = "on"
|
335
|
+
default["postgresql"]["lo_compat_privileges"] = "off"
|
336
|
+
default["postgresql"]["quote_all_identifiers"] = "off"
|
337
|
+
default["postgresql"]["sql_inheritance"] = "on"
|
338
|
+
default["postgresql"]["standard_conforming_strings"] = "on"
|
339
|
+
default["postgresql"]["synchronize_seqscans"] = "on"
|
340
|
+
|
341
|
+
# other platforms and clients
|
342
|
+
default["postgresql"]["transform_null_equals"] = "off"
|
343
|
+
|
344
|
+
|
345
|
+
#------------------------------------------------------------------------------
|
346
|
+
# ERROR HANDLING
|
347
|
+
#------------------------------------------------------------------------------
|
348
|
+
|
349
|
+
default["postgresql"]["exit_on_error"] = "off"
|
350
|
+
default["postgresql"]["restart_after_crash"] = "on"
|
351
|
+
|
352
|
+
|
353
|
+
#------------------------------------------------------------------------------
|
354
|
+
# USERS AND DATABASES
|
355
|
+
#------------------------------------------------------------------------------
|
356
|
+
|
357
|
+
default["postgresql"]["users"] = []
|
358
|
+
default["postgresql"]["databases"] = []
|
359
|
+
|
360
|
+
|
361
|
+
#------------------------------------------------------------------------------
|
362
|
+
# CUSTOMIZED OPTIONS
|
363
|
+
#------------------------------------------------------------------------------
|
364
|
+
|
365
|
+
default["postgresql"]["custom_variable_classes"] = ""
|
@@ -0,0 +1,61 @@
|
|
1
|
+
define :pg_database, :action => :create do
|
2
|
+
|
3
|
+
defaults = {
|
4
|
+
:user => "postgres",
|
5
|
+
:username => nil,
|
6
|
+
:host => nil,
|
7
|
+
:port => nil,
|
8
|
+
:encoding => "utf8",
|
9
|
+
:locale => nil,
|
10
|
+
:template => nil,
|
11
|
+
:owner => nil,
|
12
|
+
}
|
13
|
+
|
14
|
+
defaults.merge! params
|
15
|
+
|
16
|
+
exists = ["psql"]
|
17
|
+
exists.push "-c \"SELECT datname from pg_database WHERE datname='#{params[:name]}'\""
|
18
|
+
exists.push "--host #{defaults[:host]}" if defaults[:host]
|
19
|
+
exists.push "--port #{defaults[:port]}" if defaults[:port]
|
20
|
+
exists.push "| grep #{params[:name]}"
|
21
|
+
|
22
|
+
exists = exists.join ' '
|
23
|
+
|
24
|
+
case params[:action]
|
25
|
+
when :create
|
26
|
+
createdb = ["createdb"]
|
27
|
+
createdb.push "-U #{defaults[:username]}" if defaults[:username]
|
28
|
+
createdb.push "-E #{defaults[:encoding]}" if defaults[:encoding]
|
29
|
+
createdb.push "--locale #{defaults[:locale]}" if defaults[:locale]
|
30
|
+
createdb.push "-T #{defaults[:template]}" if defaults[:template]
|
31
|
+
createdb.push "--host #{defaults[:host]}" if defaults[:host]
|
32
|
+
createdb.push "--port #{defaults[:port]}" if defaults[:port]
|
33
|
+
createdb.push "-O #{defaults[:owner]}" if defaults[:owner]
|
34
|
+
|
35
|
+
createdb.push params[:name]
|
36
|
+
|
37
|
+
createdb = createdb.join ' '
|
38
|
+
|
39
|
+
execute "creating pg database #{params[:name]}" do
|
40
|
+
user defaults[:user]
|
41
|
+
command createdb
|
42
|
+
not_if exists, :user => defaults[:user]
|
43
|
+
end
|
44
|
+
|
45
|
+
when :drop
|
46
|
+
dropdb = ["dropdb"]
|
47
|
+
dropdb.push "-U #{defaults[:username]}" if defaults[:username]
|
48
|
+
dropdb.push "--host #{defaults[:host]}" if defaults[:host]
|
49
|
+
dropdb.push "--port #{defaults[:port]}" if defaults[:port]
|
50
|
+
|
51
|
+
dropdb.push params[:name]
|
52
|
+
|
53
|
+
dropdb = dropdb.join ' '
|
54
|
+
|
55
|
+
execute "dropping pg database #{params[:name]}" do
|
56
|
+
user defaults[:user]
|
57
|
+
command dropdb
|
58
|
+
only_if exists, :user => defaults[:user]
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|