server_maint 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
data/.gitmodules
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
1.9.3@chef-postgresql
|
@@ -0,0 +1,20 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
Copyright © 2012-2013 Phil Cohen <github@phlippers.net>
|
3
|
+
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
of this software and associated documentation files (the “Software”), to deal
|
6
|
+
in the Software without restriction, including without limitation the rights
|
7
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
copies of the Software, and to permit persons to whom the Software is
|
9
|
+
furnished to do so, subject to the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be included in
|
12
|
+
all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
20
|
+
THE SOFTWARE.
|
@@ -0,0 +1,588 @@
|
|
1
|
+
# chef-postgresql
|
2
|
+
|
3
|
+
## Description
|
4
|
+
|
5
|
+
Installs [PostgreSQL](http://www.postgresql.org), The world's most advanced open source database.
|
6
|
+
|
7
|
+
This installs postgres 9.x from the [PostgreSQL backports for stable Ubuntu releases](https://launchpad.net/~pitti/+archive/postgresql).
|
8
|
+
|
9
|
+
Currently supported versions:
|
10
|
+
|
11
|
+
* `9.0`
|
12
|
+
* `9.1`
|
13
|
+
* `9.2`
|
14
|
+
|
15
|
+
The default version is `9.2`.
|
16
|
+
|
17
|
+
## Requirements
|
18
|
+
|
19
|
+
### Supported Platforms
|
20
|
+
|
21
|
+
The following platforms are supported by this cookbook, meaning that the recipes run on these platforms without error:
|
22
|
+
|
23
|
+
* Ubuntu
|
24
|
+
* Debian 6
|
25
|
+
|
26
|
+
|
27
|
+
## Recipes
|
28
|
+
|
29
|
+
* `postgresql` - Set up the apt repository and install dependent packages
|
30
|
+
* `postgresql::client` - Front-end programs for PostgreSQL 9.x
|
31
|
+
* `postgresql::server` - Object-relational SQL database, version 9.x server
|
32
|
+
* `postgresql::contrib` - Additional facilities for PostgreSQL
|
33
|
+
* `postgresql::dbg` - Debug symbols for the server daemon
|
34
|
+
* `postgresql::doc` - Documentation for the PostgreSQL database management system
|
35
|
+
* `postgresql::libpq` - PostgreSQL C client library and header files for libpq5 (PostgreSQL library)
|
36
|
+
* `postgresql::postgis` - Geographic objects support for PostgreSQL 9.x
|
37
|
+
|
38
|
+
|
39
|
+
## Usage
|
40
|
+
|
41
|
+
This cookbook installs the postgresql components if not present, and pulls updates if they are installed on the system.
|
42
|
+
|
43
|
+
This cookbook provides three definitions to create, alter, and delete users as well as create and drop databases, or setup extensions. Usage is as follows:
|
44
|
+
|
45
|
+
|
46
|
+
### Users
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
# create a user
|
50
|
+
pg_user "myuser" do
|
51
|
+
privileges :superuser => false, :createdb => false, :login => true
|
52
|
+
password "mypassword"
|
53
|
+
end
|
54
|
+
|
55
|
+
# create a user with an MD5-encrypted password
|
56
|
+
pg_user "myuser" do
|
57
|
+
privileges :superuser => false, :createdb => false, :login => true
|
58
|
+
encrypted_password "667ff118ef6d196c96313aeaee7da519"
|
59
|
+
end
|
60
|
+
|
61
|
+
# drop a user
|
62
|
+
pg_user "myuser" do
|
63
|
+
action :drop
|
64
|
+
end
|
65
|
+
```
|
66
|
+
|
67
|
+
Or add users via attributes:
|
68
|
+
|
69
|
+
```json
|
70
|
+
"postgresql": {
|
71
|
+
"users": [
|
72
|
+
{
|
73
|
+
"username": "dickeyxxx",
|
74
|
+
"password": "password",
|
75
|
+
"superuser": true,
|
76
|
+
"createdb": true,
|
77
|
+
"login": true
|
78
|
+
}
|
79
|
+
]
|
80
|
+
}
|
81
|
+
```
|
82
|
+
|
83
|
+
### Databases and Extensions
|
84
|
+
|
85
|
+
```ruby
|
86
|
+
# create a database
|
87
|
+
pg_database "mydb" do
|
88
|
+
owner "myuser"
|
89
|
+
encoding "utf8"
|
90
|
+
template "template0"
|
91
|
+
locale "en_US.UTF8"
|
92
|
+
end
|
93
|
+
|
94
|
+
# install extensions to database
|
95
|
+
pg_database_extensions "mydb" do
|
96
|
+
languages "plpgsql" # install `plpgsql` language - single value may be passed without array
|
97
|
+
extensions ["hstore", "dblink"] # install `hstore` and `dblink` extensions - multiple values in array
|
98
|
+
postgis true # install `postgis` support
|
99
|
+
end
|
100
|
+
|
101
|
+
# drop dblink extension
|
102
|
+
pg_database_extensions "mydb" do
|
103
|
+
action :drop
|
104
|
+
extensions "dblink"
|
105
|
+
end
|
106
|
+
|
107
|
+
# drop a database
|
108
|
+
pg_database "mydb" do
|
109
|
+
action :drop
|
110
|
+
end
|
111
|
+
```
|
112
|
+
|
113
|
+
Or add the database via attributes:
|
114
|
+
|
115
|
+
```json
|
116
|
+
"postgresql": {
|
117
|
+
"databases": [
|
118
|
+
{
|
119
|
+
"name": "my_db",
|
120
|
+
"owner": "dickeyxxx",
|
121
|
+
"template": "template0",
|
122
|
+
"encoding": "utf8",
|
123
|
+
"locale": "en_US.UTF8",
|
124
|
+
"extensions": "hstore"
|
125
|
+
}
|
126
|
+
]
|
127
|
+
}
|
128
|
+
```
|
129
|
+
|
130
|
+
### Configuration
|
131
|
+
|
132
|
+
The `postgresql.conf` configuration may be set one of two ways:
|
133
|
+
|
134
|
+
* set individual node attributes to be interpolated into the default template
|
135
|
+
* create a custom configuration hash to write a custom file
|
136
|
+
|
137
|
+
To create a custom configuration, set the `node["postgresql"]["conf"]` hash with your custom settings:
|
138
|
+
|
139
|
+
```json
|
140
|
+
"postgresql": {
|
141
|
+
"conf": {
|
142
|
+
"data_directory": "/dev/null",
|
143
|
+
// ... all options explicitly set here
|
144
|
+
}
|
145
|
+
}
|
146
|
+
```
|
147
|
+
|
148
|
+
You may also set the contents of `pg_hba.conf` via attributes:
|
149
|
+
|
150
|
+
```json
|
151
|
+
"postgresql": {
|
152
|
+
"pg_hba": [
|
153
|
+
{ "type": "local", "db": "all", "user": "postgres", "addr": "", "method": "ident" },
|
154
|
+
{ "type": "local", "db": "all", "user": "all", "addr": "", "method": "trust" },
|
155
|
+
{ "type": "host", "db": "all", "user": "all", "addr": "127.0.0.1/32", "method": "trust" },
|
156
|
+
{ "type": "host", "db": "all", "user": "all", "addr": "::1/128", "method": "trust" },
|
157
|
+
{ "type": "host", "db": "all", "user": "postgres", "addr": "127.0.0.1/32", "method": "trust" },
|
158
|
+
{ "type": "host", "db": "all", "user": "username", "addr": "127.0.0.1/32", "method": "trust" }
|
159
|
+
]
|
160
|
+
}
|
161
|
+
```
|
162
|
+
|
163
|
+
|
164
|
+
## Attributes
|
165
|
+
|
166
|
+
```ruby
|
167
|
+
# WARNING: If this version number is changed in your own recipes, the
|
168
|
+
# FILE LOCATIONS (see below) attributes *must* also be overridden in
|
169
|
+
# order to re-compute the paths with the correct version number.
|
170
|
+
default["postgresql"]["version"] = "9.2"
|
171
|
+
|
172
|
+
default["postgresql"]["environment_variables"] = {}
|
173
|
+
default["postgresql"]["pg_ctl_options"] = ""
|
174
|
+
default["postgresql"]["pg_hba"] = []
|
175
|
+
default["postgresql"]["pg_hba_defaults"] = true # Whether to populate the pg_hba.conf with defaults
|
176
|
+
default["postgresql"]["pg_ident"] = []
|
177
|
+
default["postgresql"]["start"] = "auto" # auto, manual, disabled
|
178
|
+
|
179
|
+
default["postgresql"]["conf"] = {}
|
180
|
+
default["postgresql"]["initdb_options"] = "--locale=en_US.UTF-8"
|
181
|
+
|
182
|
+
#------------------------------------------------------------------------------
|
183
|
+
# POSTGIS
|
184
|
+
#------------------------------------------------------------------------------
|
185
|
+
default["postgis"]["version"] = "1.5"
|
186
|
+
|
187
|
+
#------------------------------------------------------------------------------
|
188
|
+
# FILE LOCATIONS
|
189
|
+
#------------------------------------------------------------------------------
|
190
|
+
default["postgresql"]["data_directory"] = "/var/lib/postgresql/#{node["postgresql"]["version"]}/main"
|
191
|
+
default["postgresql"]["hba_file"] = "/etc/postgresql/#{node["postgresql"]["version"]}/main/pg_hba.conf"
|
192
|
+
default["postgresql"]["ident_file"] = "/etc/postgresql/#{node["postgresql"]["version"]}/main/pg_ident.conf"
|
193
|
+
default["postgresql"]["external_pid_file"] = "/var/run/postgresql/#{node["postgresql"]["version"]}-main.pid"
|
194
|
+
|
195
|
+
|
196
|
+
#------------------------------------------------------------------------------
|
197
|
+
# CONNECTIONS AND AUTHENTICATION
|
198
|
+
#------------------------------------------------------------------------------
|
199
|
+
|
200
|
+
# connection settings
|
201
|
+
default["postgresql"]["listen_addresses"] = "localhost"
|
202
|
+
default["postgresql"]["port"] = 5432
|
203
|
+
default["postgresql"]["max_connections"] = 100
|
204
|
+
default["postgresql"]["superuser_reserved_connections"] = 3
|
205
|
+
default["postgresql"]["unix_socket_directory"] = "/var/run/postgresql"
|
206
|
+
default["postgresql"]["unix_socket_group"] = ""
|
207
|
+
default["postgresql"]["unix_socket_permissions"] = "0777"
|
208
|
+
default["postgresql"]["bonjour"] = "off"
|
209
|
+
default["postgresql"]["bonjour_name"] = ""
|
210
|
+
|
211
|
+
# security and authentication
|
212
|
+
default["postgresql"]["authentication_timeout"] = "1min"
|
213
|
+
default["postgresql"]["ssl"] = true
|
214
|
+
default["postgresql"]["ssl_ciphers"] = "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"
|
215
|
+
default["postgresql"]["ssl_renegotiation_limit"] = "512MB"
|
216
|
+
default["postgresql"]["ssl_ca_file"] = ""
|
217
|
+
default["postgresql"]["ssl_cert_file"] = "/etc/ssl/certs/ssl-cert-snakeoil.pem"
|
218
|
+
default["postgresql"]["ssl_crl_file"] = ""
|
219
|
+
default["postgresql"]["ssl_key_file"] = "/etc/ssl/private/ssl-cert-snakeoil.key"
|
220
|
+
default["postgresql"]["password_encryption"] = "on"
|
221
|
+
default["postgresql"]["db_user_namespace"] = "off"
|
222
|
+
|
223
|
+
# kerberos and gssapi
|
224
|
+
default["postgresql"]["db_user_namespace"] = "off"
|
225
|
+
default["postgresql"]["krb_server_keyfile"] = ""
|
226
|
+
default["postgresql"]["krb_srvname"] = "postgres"
|
227
|
+
default["postgresql"]["krb_caseins_users"] = "off"
|
228
|
+
|
229
|
+
# tcp keepalives
|
230
|
+
default["postgresql"]["tcp_keepalives_idle"] = 0
|
231
|
+
default["postgresql"]["tcp_keepalives_interval"] = 0
|
232
|
+
default["postgresql"]["tcp_keepalives_count"] = 0
|
233
|
+
|
234
|
+
|
235
|
+
#------------------------------------------------------------------------------
|
236
|
+
# RESOURCE USAGE (except WAL)
|
237
|
+
#------------------------------------------------------------------------------
|
238
|
+
|
239
|
+
# memory
|
240
|
+
default["postgresql"]["shared_buffers"] = "24MB"
|
241
|
+
default["postgresql"]["temp_buffers"] = "8MB"
|
242
|
+
default["postgresql"]["max_prepared_transactions"] = 0
|
243
|
+
default["postgresql"]["work_mem"] = "1MB"
|
244
|
+
default["postgresql"]["maintenance_work_mem"] = "16MB"
|
245
|
+
default["postgresql"]["max_stack_depth"] = "2MB"
|
246
|
+
|
247
|
+
# kernel resource usage
|
248
|
+
default["postgresql"]["max_files_per_process"] = 1000
|
249
|
+
default["postgresql"]["shared_preload_libraries"] = ""
|
250
|
+
|
251
|
+
# cost-based vacuum delay
|
252
|
+
default["postgresql"]["vacuum_cost_delay"] = "0ms"
|
253
|
+
default["postgresql"]["vacuum_cost_page_hit"] = 1
|
254
|
+
default["postgresql"]["vacuum_cost_page_miss"] = 10
|
255
|
+
default["postgresql"]["vacuum_cost_page_dirty"] = 20
|
256
|
+
default["postgresql"]["vacuum_cost_limit"] = 200
|
257
|
+
|
258
|
+
# background writer
|
259
|
+
default["postgresql"]["bgwriter_delay"] = "200ms"
|
260
|
+
default["postgresql"]["bgwriter_lru_maxpages"] = 100
|
261
|
+
default["postgresql"]["bgwriter_lru_multiplier"] = 2.0
|
262
|
+
|
263
|
+
# asynchronous behavior
|
264
|
+
default["postgresql"]["effective_io_concurrency"] = 1
|
265
|
+
|
266
|
+
|
267
|
+
#------------------------------------------------------------------------------
|
268
|
+
# WRITE AHEAD LOG
|
269
|
+
#------------------------------------------------------------------------------
|
270
|
+
|
271
|
+
# settings
|
272
|
+
default["postgresql"]["wal_level"] = "minimal"
|
273
|
+
default["postgresql"]["fsync"] = "on"
|
274
|
+
default["postgresql"]["synchronous_commit"] = "on"
|
275
|
+
default["postgresql"]["wal_sync_method"] = "fsync"
|
276
|
+
default["postgresql"]["full_page_writes"] = "on"
|
277
|
+
default["postgresql"]["wal_buffers"] = -1
|
278
|
+
default["postgresql"]["wal_writer_delay"] = "200ms"
|
279
|
+
default["postgresql"]["commit_delay"] = 0
|
280
|
+
default["postgresql"]["commit_siblings"] = 5
|
281
|
+
|
282
|
+
# checkpoints
|
283
|
+
default["postgresql"]["checkpoint_segments"] = 3
|
284
|
+
default["postgresql"]["checkpoint_timeout"] = "5min"
|
285
|
+
default["postgresql"]["checkpoint_completion_target"] = 0.5
|
286
|
+
default["postgresql"]["checkpoint_warning"] = "30s"
|
287
|
+
|
288
|
+
# archiving
|
289
|
+
default["postgresql"]["archive_mode"] = "off"
|
290
|
+
default["postgresql"]["archive_command"] = ""
|
291
|
+
default["postgresql"]["archive_timeout"] = 0
|
292
|
+
|
293
|
+
|
294
|
+
#------------------------------------------------------------------------------
|
295
|
+
# REPLICATION
|
296
|
+
#------------------------------------------------------------------------------
|
297
|
+
|
298
|
+
# master server
|
299
|
+
default["postgresql"]["max_wal_senders"] = 0
|
300
|
+
default["postgresql"]["wal_sender_delay"] = "1s"
|
301
|
+
default["postgresql"]["wal_keep_segments"] = 0
|
302
|
+
default["postgresql"]["vacuum_defer_cleanup_age"] = 0
|
303
|
+
default["postgresql"]["replication_timeout"] = "60s"
|
304
|
+
default["postgresql"]["synchronous_standby_names"] = ""
|
305
|
+
|
306
|
+
# standby servers
|
307
|
+
default["postgresql"]["hot_standby"] = "off"
|
308
|
+
default["postgresql"]["max_standby_archive_delay"] = "30s"
|
309
|
+
default["postgresql"]["max_standby_streaming_delay"] = "30s"
|
310
|
+
default["postgresql"]["wal_receiver_status_interval"] = "10s"
|
311
|
+
default["postgresql"]["hot_standby_feedback"] = "off"
|
312
|
+
|
313
|
+
|
314
|
+
#------------------------------------------------------------------------------
|
315
|
+
# QUERY TUNING
|
316
|
+
#------------------------------------------------------------------------------
|
317
|
+
|
318
|
+
# planner method configuration
|
319
|
+
default["postgresql"]["enable_bitmapscan"] = "on"
|
320
|
+
default["postgresql"]["enable_hashagg"] = "on"
|
321
|
+
default["postgresql"]["enable_hashjoin"] = "on"
|
322
|
+
default["postgresql"]["enable_indexscan"] = "on"
|
323
|
+
default["postgresql"]["enable_material"] = "on"
|
324
|
+
default["postgresql"]["enable_mergejoin"] = "on"
|
325
|
+
default["postgresql"]["enable_nestloop"] = "on"
|
326
|
+
default["postgresql"]["enable_seqscan"] = "on"
|
327
|
+
default["postgresql"]["enable_sort"] = "on"
|
328
|
+
default["postgresql"]["enable_tidscan"] = "on"
|
329
|
+
|
330
|
+
# planner cost constants
|
331
|
+
default["postgresql"]["seq_page_cost"] = 1.0
|
332
|
+
default["postgresql"]["random_page_cost"] = 4.0
|
333
|
+
default["postgresql"]["cpu_tuple_cost"] = 0.01
|
334
|
+
default["postgresql"]["cpu_index_tuple_cost"] = 0.005
|
335
|
+
default["postgresql"]["cpu_operator_cost"] = 0.0025
|
336
|
+
default["postgresql"]["effective_cache_size"] = "128MB"
|
337
|
+
|
338
|
+
# genetic query optimizer
|
339
|
+
default["postgresql"]["geqo"] = "on"
|
340
|
+
default["postgresql"]["geqo_threshold"] = 12
|
341
|
+
default["postgresql"]["geqo_effort"] = 5
|
342
|
+
default["postgresql"]["geqo_pool_size"] = 0
|
343
|
+
default["postgresql"]["geqo_generations"] = 0
|
344
|
+
default["postgresql"]["geqo_selection_bias"] = 2.0
|
345
|
+
default["postgresql"]["geqo_seed"] = 0.0
|
346
|
+
|
347
|
+
# other planner options
|
348
|
+
default["postgresql"]["default_statistics_target"] = 100
|
349
|
+
default["postgresql"]["constraint_exclusion"] = "partition"
|
350
|
+
default["postgresql"]["cursor_tuple_fraction"] = 0.1
|
351
|
+
default["postgresql"]["from_collapse_limit"] = 8
|
352
|
+
default["postgresql"]["join_collapse_limit"] = 8
|
353
|
+
|
354
|
+
|
355
|
+
#------------------------------------------------------------------------------
|
356
|
+
# ERROR REPORTING AND LOGGING
|
357
|
+
#------------------------------------------------------------------------------
|
358
|
+
|
359
|
+
# where to log
|
360
|
+
default["postgresql"]["log_destination"] = "stderr"
|
361
|
+
default["postgresql"]["logging_collector"] = "off"
|
362
|
+
default["postgresql"]["log_directory"] = "pg_log"
|
363
|
+
default["postgresql"]["log_filename"] = "postgresql-%Y-%m-%d_%H%M%S.log"
|
364
|
+
default["postgresql"]["log_file_mode"] = 0600
|
365
|
+
default["postgresql"]["log_truncate_on_rotation"] = "off"
|
366
|
+
default["postgresql"]["log_rotation_age"] = "1d"
|
367
|
+
default["postgresql"]["log_rotation_size"] = "10MB"
|
368
|
+
|
369
|
+
# These are relevant when logging to syslog:
|
370
|
+
default["postgresql"]["syslog_facility"] = "LOCAL0"
|
371
|
+
default["postgresql"]["syslog_ident"] = "postgres"
|
372
|
+
default["postgresql"]["silent_mode"] = "off"
|
373
|
+
|
374
|
+
# when to log
|
375
|
+
default["postgresql"]["client_min_messages"] = "notice"
|
376
|
+
default["postgresql"]["log_min_messages"] = "warning"
|
377
|
+
default["postgresql"]["log_min_error_statement"] = "error"
|
378
|
+
default["postgresql"]["log_min_duration_statement"] = -1
|
379
|
+
|
380
|
+
# what to log
|
381
|
+
default["postgresql"]["debug_print_parse"] = "off"
|
382
|
+
default["postgresql"]["debug_print_rewritten"] = "off"
|
383
|
+
default["postgresql"]["debug_print_plan"] = "off"
|
384
|
+
default["postgresql"]["debug_pretty_print"] = "on"
|
385
|
+
default["postgresql"]["log_checkpoints"] = "off"
|
386
|
+
default["postgresql"]["log_connections"] = "off"
|
387
|
+
default["postgresql"]["log_disconnections"] = "off"
|
388
|
+
default["postgresql"]["log_duration"] = "off"
|
389
|
+
default["postgresql"]["log_error_verbosity"] = "default"
|
390
|
+
default["postgresql"]["log_hostname"] = "off"
|
391
|
+
default["postgresql"]["log_line_prefix"] = "%t "
|
392
|
+
default["postgresql"]["log_lock_waits"] = "off"
|
393
|
+
default["postgresql"]["log_statement"] = "none"
|
394
|
+
default["postgresql"]["log_temp_files"] = -1
|
395
|
+
default["postgresql"]["log_timezone"] = "(defaults to server environment setting)"
|
396
|
+
|
397
|
+
|
398
|
+
#------------------------------------------------------------------------------
|
399
|
+
# RUNTIME STATISTICS
|
400
|
+
#------------------------------------------------------------------------------
|
401
|
+
|
402
|
+
# query/index statistics collector
|
403
|
+
default["postgresql"]["track_activities"] = "on"
|
404
|
+
default["postgresql"]["track_counts"] = "on"
|
405
|
+
default["postgresql"]["track_functions"] = "none"
|
406
|
+
default["postgresql"]["track_activity_query_size"] = 1024
|
407
|
+
default["postgresql"]["update_process_title"] = "on"
|
408
|
+
default["postgresql"]["stats_temp_directory"] = 'pg_stat_tmp'
|
409
|
+
|
410
|
+
# statistics monitoring
|
411
|
+
default["postgresql"]["log_parser_stats"] = "off"
|
412
|
+
default["postgresql"]["log_planner_stats"] = "off"
|
413
|
+
default["postgresql"]["log_executor_stats"] = "off"
|
414
|
+
default["postgresql"]["log_statement_stats"] = "off"
|
415
|
+
|
416
|
+
|
417
|
+
#------------------------------------------------------------------------------
|
418
|
+
# AUTOVACUUM PARAMETERS
|
419
|
+
#------------------------------------------------------------------------------
|
420
|
+
|
421
|
+
default["postgresql"]["autovacuum"] = "on"
|
422
|
+
default["postgresql"]["log_autovacuum_min_duration"] = -1
|
423
|
+
default["postgresql"]["autovacuum_max_workers"] = 3
|
424
|
+
default["postgresql"]["autovacuum_naptime"] = "1min"
|
425
|
+
default["postgresql"]["autovacuum_vacuum_threshold"] = 50
|
426
|
+
default["postgresql"]["autovacuum_analyze_threshold"] = 50
|
427
|
+
default["postgresql"]["autovacuum_vacuum_scale_factor"] = 0.2
|
428
|
+
default["postgresql"]["autovacuum_analyze_scale_factor"] = 0.1
|
429
|
+
default["postgresql"]["autovacuum_freeze_max_age"] = 200000000
|
430
|
+
default["postgresql"]["autovacuum_vacuum_cost_delay"] = "20ms"
|
431
|
+
default["postgresql"]["autovacuum_vacuum_cost_limit"] = -1
|
432
|
+
|
433
|
+
|
434
|
+
#------------------------------------------------------------------------------
|
435
|
+
# CLIENT CONNECTION DEFAULTS
|
436
|
+
#------------------------------------------------------------------------------
|
437
|
+
|
438
|
+
# statement behavior
|
439
|
+
default["postgresql"]["search_path"] = '"$user",public'
|
440
|
+
default["postgresql"]["default_tablespace"] = ""
|
441
|
+
default["postgresql"]["temp_tablespaces"] = ""
|
442
|
+
default["postgresql"]["check_function_bodies"] = "on"
|
443
|
+
default["postgresql"]["default_transaction_isolation"] = "read committed"
|
444
|
+
default["postgresql"]["default_transaction_read_only"] = "off"
|
445
|
+
default["postgresql"]["default_transaction_deferrable"] = "off"
|
446
|
+
default["postgresql"]["session_replication_role"] = "origin"
|
447
|
+
default["postgresql"]["statement_timeout"] = 0
|
448
|
+
default["postgresql"]["vacuum_freeze_min_age"] = 50000000
|
449
|
+
default["postgresql"]["vacuum_freeze_table_age"] = 150000000
|
450
|
+
default["postgresql"]["bytea_output"] = "hex"
|
451
|
+
default["postgresql"]["xmlbinary"] = "base64"
|
452
|
+
default["postgresql"]["xmloption"] = "content"
|
453
|
+
|
454
|
+
# locale and formatting
|
455
|
+
default["postgresql"]["datestyle"] = "iso, mdy"
|
456
|
+
default["postgresql"]["intervalstyle"] = "postgres"
|
457
|
+
default["postgresql"]["timezone"] = "(defaults to server environment setting)"
|
458
|
+
default["postgresql"]["timezone_abbreviations"] = "Default"
|
459
|
+
default["postgresql"]["extra_float_digits"] = 0
|
460
|
+
default["postgresql"]["client_encoding"] = "sql_ascii"
|
461
|
+
|
462
|
+
# These settings are initialized by initdb, but they can be changed.
|
463
|
+
default["postgresql"]["lc_messages"] = "en_US.UTF-8"
|
464
|
+
default["postgresql"]["lc_monetary"] = "en_US.UTF-8"
|
465
|
+
default["postgresql"]["lc_numeric"] = "en_US.UTF-8"
|
466
|
+
default["postgresql"]["lc_time"] = "en_US.UTF-8"
|
467
|
+
|
468
|
+
# default configuration for text search
|
469
|
+
default["postgresql"]["default_text_search_config"] = "pg_catalog.english"
|
470
|
+
|
471
|
+
# other defaults
|
472
|
+
default["postgresql"]["dynamic_library_path"] = "$libdir"
|
473
|
+
default["postgresql"]["local_preload_libraries"] = ""
|
474
|
+
|
475
|
+
|
476
|
+
#------------------------------------------------------------------------------
|
477
|
+
# LOCK MANAGEMENT
|
478
|
+
#------------------------------------------------------------------------------
|
479
|
+
|
480
|
+
default["postgresql"]["deadlock_timeout"] = "1s"
|
481
|
+
default["postgresql"]["max_locks_per_transaction"] = 64
|
482
|
+
default["postgresql"]["max_pred_locks_per_transaction"] = 64
|
483
|
+
|
484
|
+
|
485
|
+
#------------------------------------------------------------------------------
|
486
|
+
# VERSION/PLATFORM COMPATIBILITY
|
487
|
+
#------------------------------------------------------------------------------
|
488
|
+
|
489
|
+
# previous postgresql versions
|
490
|
+
default["postgresql"]["array_nulls"] = "on"
|
491
|
+
default["postgresql"]["backslash_quote"] = "safe_encoding"
|
492
|
+
default["postgresql"]["default_with_oids"] = "off"
|
493
|
+
default["postgresql"]["escape_string_warning"] = "on"
|
494
|
+
default["postgresql"]["lo_compat_privileges"] = "off"
|
495
|
+
default["postgresql"]["quote_all_identifiers"] = "off"
|
496
|
+
default["postgresql"]["sql_inheritance"] = "on"
|
497
|
+
default["postgresql"]["standard_conforming_strings"] = "on"
|
498
|
+
default["postgresql"]["synchronize_seqscans"] = "on"
|
499
|
+
|
500
|
+
# other platforms and clients
|
501
|
+
default["postgresql"]["transform_null_equals"] = "off"
|
502
|
+
|
503
|
+
|
504
|
+
#------------------------------------------------------------------------------
|
505
|
+
# ERROR HANDLING
|
506
|
+
#------------------------------------------------------------------------------
|
507
|
+
|
508
|
+
default["postgresql"]["exit_on_error"] = "off"
|
509
|
+
default["postgresql"]["restart_after_crash"] = "on"
|
510
|
+
|
511
|
+
|
512
|
+
#------------------------------------------------------------------------------
|
513
|
+
# USERS AND DATABASES
|
514
|
+
#------------------------------------------------------------------------------
|
515
|
+
|
516
|
+
default["postgresql"]["users"] = []
|
517
|
+
default["postgresql"]["databases"] = []
|
518
|
+
|
519
|
+
|
520
|
+
#------------------------------------------------------------------------------
|
521
|
+
# CUSTOMIZED OPTIONS
|
522
|
+
#------------------------------------------------------------------------------
|
523
|
+
|
524
|
+
default["postgresql"]["custom_variable_classes"] = ""
|
525
|
+
```
|
526
|
+
|
527
|
+
|
528
|
+
## TODO
|
529
|
+
|
530
|
+
* Add support for replication setup
|
531
|
+
* Add installation and configuration for the following packages:
|
532
|
+
|
533
|
+
```
|
534
|
+
postgresql-{version}-debversion
|
535
|
+
postgresql-{version}-ip4r
|
536
|
+
postgresql-{version}-pljava-gcj
|
537
|
+
postgresql-plperl-{version}
|
538
|
+
postgresql-{version}-pllua
|
539
|
+
postgresql-{version}-plproxy
|
540
|
+
postgresql-plpython-{version}
|
541
|
+
postgresql-{version}-plr
|
542
|
+
postgresql-{version}-plsh
|
543
|
+
postgresql-pltcl-{version}
|
544
|
+
postgresql-server-dev-{version}
|
545
|
+
```
|
546
|
+
|
547
|
+
|
548
|
+
## Contributing
|
549
|
+
|
550
|
+
1. Fork it
|
551
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
552
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
553
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
554
|
+
5. Create new Pull Request
|
555
|
+
|
556
|
+
|
557
|
+
## Contributors
|
558
|
+
|
559
|
+
Many thanks go to the following who have contributed to making this cookbook even better:
|
560
|
+
|
561
|
+
* **[@flashingpumpkin](https://github.com/flashingpumpkin)**
|
562
|
+
* recipe bugfixes
|
563
|
+
* add `pg_user` and `pg_database` definitions
|
564
|
+
* **[@cmer](https://github.com/cmer)**
|
565
|
+
* add `encrypted_password` param for `pg_user` definition
|
566
|
+
* **[@dickeyxxx](https://github.com/dickeyxxx)**
|
567
|
+
* speed up recipe loading and execution
|
568
|
+
* add support for specifying database locale
|
569
|
+
* add support for adding users and databases via attributes
|
570
|
+
* **[@alno](https://github.com/alno)**
|
571
|
+
* add support to install additional languages/extensions/postgis to existing databases
|
572
|
+
* add `pg_database_extensions` definition
|
573
|
+
* **[@ermolaev](https://github.com/ermolaev)**
|
574
|
+
* improve platform check for source repo
|
575
|
+
* **[@escobera](https://github.com/escobera)**
|
576
|
+
* fix for missing ssl directives in `postgresql.conf`
|
577
|
+
* **[@cdoughty77](https://github.com/cdoughty77)**
|
578
|
+
* allow finer tuning inside pg_hba.conf file
|
579
|
+
|
580
|
+
|
581
|
+
|
582
|
+
## License
|
583
|
+
|
584
|
+
**chef-postgresql**
|
585
|
+
|
586
|
+
* Freely distributable and licensed under the [MIT license](http://phlipper.mit-license.org/2012-2013/license.html).
|
587
|
+
* Copyright (c) 2012-2013 Phil Cohen (github@phlippers.net) [](http://coderwall.com/phlipper)
|
588
|
+
* http://phlippers.net/
|