• This repository has been archived on 23/Jan/2019
  • Stars
    star
    175
  • Rank 218,059 (Top 5 %)
  • Language
    Ruby
  • License
    MIT License
  • Created over 12 years ago
  • Updated about 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Chef cookbook for PostgreSQL components

chef-postgresql

Flair

Cookbook Version License Build Status Gitter It Works On My Machineโ„ข Tip Endorse

Description

Installs PostgreSQL, The world's most advanced open source database.

This installs postgres 9.x from the PostgreSQL Apt Repository.

Currently supported versions:

  • 9.0
  • 9.1
  • 9.2
  • 9.3
  • 9.4

The default version is 9.4.

Requirements

Supported Platforms

The following platforms are supported by this cookbook, meaning that the recipes run on these platforms without error:

  • Debian 7.8
  • Ubuntu 12.04
  • Ubuntu 14.04

Chef

This cookbook requires Chef >= 11.13 due to the use of the sensitive attribute for some resources.

Cookbooks

Recipes

  • postgresql - Set up the apt repository and install dependent packages
  • postgresql::apt_repository - Internal recipe to setup the apt repository
  • postgresql::client - Front-end programs for PostgreSQL 9.x
  • postgresql::configuration - Internal recipe to manage configuration files
  • postgresql::contrib - Additional facilities for PostgreSQL
  • postgresql::data_directory - Internal recipe to setup the data directory
  • postgresql::dbg - Debug symbols for the server daemon
  • postgresql::debian_backports - Internal recipe to manage debian backports
  • postgresql::doc - Documentation for the PostgreSQL database management system
  • postgresql::libpq - PostgreSQL C client library and header files for libpq5 (PostgreSQL library)
  • postgresql::postgis - Geographic objects support for PostgreSQL 9.x (currently Ubuntu only)
  • postgresql::server - Object-relational SQL database, version 9.x server
  • postgresql::server_dev - Development files for PostgreSQL server-side programming
  • postgresql::service - Internal recipe to declare the system service
  • postgresql::setup_databases - Internal recipe to manage specified databases
  • postgresql::setup_extensions - Internal recipe to manage specified database extensions
  • postgresql::setup_languages - Internal recipe to manage specified database languages
  • postgresql::setup_users - Internal recipe to manage specified users

Usage

This cookbook installs the postgresql components if not present, and pulls updates if they are installed on the system.

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:

Users

# create a user
postgresql_user "myuser" do
  superuser false
  createdb false
  login true
  replication false
  password "mypassword"
end

# create a user with an MD5-encrypted password
postgresql_user "myuser" do
  superuser false
  createdb false
  login true
  replication false
  encrypted_password "667ff118ef6d196c96313aeaee7da519"
end

# drop a user
postgresql_user "myuser" do
  action :drop
end

Or add users via attributes:

"postgresql": {
  "users": [
    {
      "username": "dickeyxxx",
      "password": "password",
      "superuser": true,
      "replication": false,
      "createdb": true,
      "createrole": false,
      "inherit": true,
      "replication": false,
      "login": true
    }
  ]
}

Databases and Extensions

# create a database
postgresql_database "mydb" do
  owner "myuser"
  encoding "UTF-8"
  template "template0"
  locale "en_US.UTF-8"
end

# install extensions to database
postgresql_extension "hstore" do
  database "mydb"
end

postgresql_language "plpgsql" do
  database "mydb"
end

# drop dblink extension
postgresql_extension "dblink" do
  database "mydb"
  action :drop
end

# drop a database
postgresql_database "mydb" do
  action :drop
end

Or add the database via attributes:

"postgresql": {
  "databases": [
    {
      "name": "my_db",
      "owner": "dickeyxxx",
      "template": "template0",
      "encoding": "UTF-8",
      "locale": "en_US.UTF-8",
      "extensions": ["hstore", "dblink"],
      "postgis": true
    }
  ]
}

Configuration

The postgresql.conf configuration may be set one of two ways:

  • set individual node attributes to be interpolated into the default template
  • create a custom configuration hash to write a custom file

To create a custom configuration, set the node["postgresql"]["conf"] hash with your custom settings:

"postgresql": {
  "conf": {
    "data_directory": "/dev/null",
    // ... all options explicitly set here
  }
}

You may also set the contents of pg_hba.conf via attributes:

"postgresql": {
  "pg_hba": [
    { "type": "local", "db": "all", "user": "postgres",   "addr": "",             "method": "ident" },
    { "type": "local", "db": "all", "user": "all",        "addr": "",             "method": "trust" },
    { "type": "host",  "db": "all", "user": "all",        "addr": "127.0.0.1/32", "method": "trust" },
    { "type": "host",  "db": "all", "user": "all",        "addr": "::1/128",      "method": "trust" },
    { "type": "host",  "db": "all", "user": "postgres",   "addr": "127.0.0.1/32", "method": "trust" },
    { "type": "host",  "db": "all", "user": "username",   "addr": "127.0.0.1/32", "method": "trust" }
  ]
}

Change APT distribution

Currently the APT distributions are sourced from http://apt.postgresql.org/pub/repos/apt/. In some cases this source might not immediately contain a package for the distribution of your target system.

The node["postgresql"]["apt_distribution"] attribute can be used to install PostgreSQL from a different compatible distribution:

"postgresql": {
  "apt_distribution": "precise"
}

Attributes

# WARNING: If this version number is changed in your own recipes, the
# FILE LOCATIONS (see below) attributes *must* also be overridden in
# order to re-compute the paths with the correct version number.
default["postgresql"]["version"]                         = "9.4"

#----------------------------------------------------------------------------
# DAEMON CONTROL
#----------------------------------------------------------------------------
default["postgresql"]["service_actions"]                 = %w[enable start]

# control how the postgres service is signaled when configuration files are
# updated. by default the service is told to `:restart` (stop, start). if you
# run high availability installation and do not want the service to restart via
# chef you can change this to `:reload`. the caveat is that you will need to
# manually restart the postgres server if you change a setting that requires
# a full restart.
default["postgresql"]["cfg_update_action"]               = :restart

#----------------------------------------------------------------------------
# APT REPOSITORY
#----------------------------------------------------------------------------
default["postgresql"]["apt_distribution"]                = node["lsb"]["codename"]
default["postgresql"]["apt_repository"]                  = "apt.postgresql.org"
default["postgresql"]["apt_uri"]                         = "http://apt.postgresql.org/pub/repos/apt"
default["postgresql"]["apt_components"]                  = ["main"]
default["postgresql"]["apt_key"]                         = "https://www.postgresql.org/media/keys/ACCC4CF8.asc"
# You can set default["postgresql"]["apt_keyserver"] if you want to use a keyserver

default["postgresql"]["environment_variables"]           = {}
default["postgresql"]["pg_ctl_options"]                  = ""
default["postgresql"]["pg_hba"]                          = []
default["postgresql"]["pg_hba_defaults"]                 = true  # Whether to populate the pg_hba.conf with defaults
default["postgresql"]["pg_ident"]                        = []
default["postgresql"]["start"]                           = "auto"  # auto, manual, disabled

default["postgresql"]["conf"]                            = {}
default["postgresql"]["conf_custom"]                     = false  # if true, only use node["postgresql"]["conf"]
default["postgresql"]["initdb_options"]                  = "--locale=en_US.UTF-8"

#------------------------------------------------------------------------------
# FILE LOCATIONS
#------------------------------------------------------------------------------
default["postgresql"]["data_directory"]                  = "/var/lib/postgresql/#{node["postgresql"]["version"]}/main"
default["postgresql"]["hba_file"]                        = "/etc/postgresql/#{node["postgresql"]["version"]}/main/pg_hba.conf"
default["postgresql"]["ident_file"]                      = "/etc/postgresql/#{node["postgresql"]["version"]}/main/pg_ident.conf"
default["postgresql"]["external_pid_file"]               = "/var/run/postgresql/#{node["postgresql"]["version"]}-main.pid"


#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# connection settings
default["postgresql"]["listen_addresses"]                = "localhost"
default["postgresql"]["port"]                            = 5432
default["postgresql"]["max_connections"]                 = 100
default["postgresql"]["superuser_reserved_connections"]  = 3
default["postgresql"]["unix_socket_group"]               = ""
default["postgresql"]["unix_socket_permissions"]         = "0777"
default["postgresql"]["bonjour"]                         = "off"
default["postgresql"]["bonjour_name"]                    = ""

if Gem::Version.new(node["postgresql"]["version"]) >= Gem::Version.new("9.3")
  default["postgresql"]["unix_socket_directories"]       = "/var/run/postgresql"
else
  default["postgresql"]["unix_socket_directory"]         = "/var/run/postgresql"
end

# security and authentication
default["postgresql"]["authentication_timeout"]          = "1min"
default["postgresql"]["ssl"]                             = true
default["postgresql"]["ssl_ciphers"]                     = "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"
default["postgresql"]["ssl_renegotiation_limit"]         = "512MB"
default["postgresql"]["ssl_ca_file"]                     = ""
default["postgresql"]["ssl_cert_file"]                   = "/etc/ssl/certs/ssl-cert-snakeoil.pem"
default["postgresql"]["ssl_crl_file"]                    = ""
default["postgresql"]["ssl_key_file"]                    = "/etc/ssl/private/ssl-cert-snakeoil.key"
default["postgresql"]["password_encryption"]             = "on"
default["postgresql"]["db_user_namespace"]               = "off"

# kerberos and gssapi
default["postgresql"]["db_user_namespace"]               = "off"
default["postgresql"]["krb_server_keyfile"]              = ""
default["postgresql"]["krb_srvname"]                     = "postgres"
default["postgresql"]["krb_caseins_users"]               = "off"

# tcp keepalives
default["postgresql"]["tcp_keepalives_idle"]             = 0
default["postgresql"]["tcp_keepalives_interval"]         = 0
default["postgresql"]["tcp_keepalives_count"]            = 0


#------------------------------------------------------------------------------
# RESOURCE USAGE (except WAL)
#------------------------------------------------------------------------------

# memory
default["postgresql"]["shared_buffers"]                  = "24MB"
default["postgresql"]["temp_buffers"]                    = "8MB"
default["postgresql"]["max_prepared_transactions"]       = 0
default["postgresql"]["work_mem"]                        = "1MB"
default["postgresql"]["maintenance_work_mem"]            = "16MB"
default["postgresql"]["max_stack_depth"]                 = "2MB"

# kernel resource usage
default["postgresql"]["max_files_per_process"]           = 1000
default["postgresql"]["shared_preload_libraries"]        = ""

# cost-based vacuum delay
default["postgresql"]["vacuum_cost_delay"]               = "0ms"
default["postgresql"]["vacuum_cost_page_hit"]            = 1
default["postgresql"]["vacuum_cost_page_miss"]           = 10
default["postgresql"]["vacuum_cost_page_dirty"]          = 20
default["postgresql"]["vacuum_cost_limit"]               = 200

# background writer
default["postgresql"]["bgwriter_delay"]                  = "200ms"
default["postgresql"]["bgwriter_lru_maxpages"]           = 100
default["postgresql"]["bgwriter_lru_multiplier"]         = 2.0

# asynchronous behavior
default["postgresql"]["effective_io_concurrency"]        = 1


#------------------------------------------------------------------------------
# WRITE AHEAD LOG
#------------------------------------------------------------------------------

# settings
default["postgresql"]["wal_level"]                       = "minimal"
default["postgresql"]["fsync"]                           = "on"
default["postgresql"]["synchronous_commit"]              = "on"
default["postgresql"]["wal_sync_method"]                 = "fsync"
default["postgresql"]["full_page_writes"]                = "on"
default["postgresql"]["wal_buffers"]                     = -1
default["postgresql"]["wal_writer_delay"]                = "200ms"
default["postgresql"]["commit_delay"]                    = 0
default["postgresql"]["commit_siblings"]                 = 5

# checkpoints
default["postgresql"]["checkpoint_segments"]             = 3
default["postgresql"]["checkpoint_timeout"]              = "5min"
default["postgresql"]["checkpoint_completion_target"]    = 0.5
default["postgresql"]["checkpoint_warning"]              = "30s"

# archiving
default["postgresql"]["archive_mode"]                    = "off"
default["postgresql"]["archive_command"]                 = ""
default["postgresql"]["archive_timeout"]                 = 0


#------------------------------------------------------------------------------
# REPLICATION
#------------------------------------------------------------------------------

# master server
default["postgresql"]["max_wal_senders"]                 = 0
default["postgresql"]["wal_sender_delay"]                = "1s"
default["postgresql"]["wal_keep_segments"]               = 0
default["postgresql"]["vacuum_defer_cleanup_age"]        = 0
default["postgresql"]["replication_timeout"]             = "60s"
default["postgresql"]["synchronous_standby_names"]       = ""

# standby servers
default["postgresql"]["hot_standby"]                     = "off"
default["postgresql"]["max_standby_archive_delay"]       = "30s"
default["postgresql"]["max_standby_streaming_delay"]     = "30s"
default["postgresql"]["wal_receiver_status_interval"]    = "10s"
default["postgresql"]["hot_standby_feedback"]            = "off"


#------------------------------------------------------------------------------
# QUERY TUNING
#------------------------------------------------------------------------------

# planner method configuration
default["postgresql"]["enable_bitmapscan"]               = "on"
default["postgresql"]["enable_hashagg"]                  = "on"
default["postgresql"]["enable_hashjoin"]                 = "on"
default["postgresql"]["enable_indexscan"]                = "on"
default["postgresql"]["enable_material"]                 = "on"
default["postgresql"]["enable_mergejoin"]                = "on"
default["postgresql"]["enable_nestloop"]                 = "on"
default["postgresql"]["enable_seqscan"]                  = "on"
default["postgresql"]["enable_sort"]                     = "on"
default["postgresql"]["enable_tidscan"]                  = "on"

# planner cost constants
default["postgresql"]["seq_page_cost"]                   = 1.0
default["postgresql"]["random_page_cost"]                = 4.0
default["postgresql"]["cpu_tuple_cost"]                  = 0.01
default["postgresql"]["cpu_index_tuple_cost"]            = 0.005
default["postgresql"]["cpu_operator_cost"]               = 0.0025
default["postgresql"]["effective_cache_size"]            = "128MB"

# genetic query optimizer
default["postgresql"]["geqo"]                            = "on"
default["postgresql"]["geqo_threshold"]                  = 12
default["postgresql"]["geqo_effort"]                     = 5
default["postgresql"]["geqo_pool_size"]                  = 0
default["postgresql"]["geqo_generations"]                = 0
default["postgresql"]["geqo_selection_bias"]             = 2.0
default["postgresql"]["geqo_seed"]                       = 0.0

# other planner options
default["postgresql"]["default_statistics_target"]       = 100
default["postgresql"]["constraint_exclusion"]            = "partition"
default["postgresql"]["cursor_tuple_fraction"]           = 0.1
default["postgresql"]["from_collapse_limit"]             = 8
default["postgresql"]["join_collapse_limit"]             = 8


#------------------------------------------------------------------------------
# ERROR REPORTING AND LOGGING
#------------------------------------------------------------------------------

# where to log
default["postgresql"]["log_destination"]                 = "stderr"
default["postgresql"]["logging_collector"]               = "off"
default["postgresql"]["log_directory"]                   = "pg_log"
default["postgresql"]["log_filename"]                    = "postgresql-%Y-%m-%d_%H%M%S.log"
default["postgresql"]["log_file_mode"]                   = 0600
default["postgresql"]["log_truncate_on_rotation"]        = "off"
default["postgresql"]["log_rotation_age"]                = "1d"
default["postgresql"]["log_rotation_size"]               = "10MB"

# These are relevant when logging to syslog:
default["postgresql"]["syslog_facility"]                 = "LOCAL0"
default["postgresql"]["syslog_ident"]                    = "postgres"
default["postgresql"]["silent_mode"]                     = "off"

# when to log
default["postgresql"]["client_min_messages"]             = "notice"
default["postgresql"]["log_min_messages"]                = "warning"
default["postgresql"]["log_min_error_statement"]         = "error"
default["postgresql"]["log_min_duration_statement"]      = -1

# what to log
default["postgresql"]["debug_print_parse"]               = "off"
default["postgresql"]["debug_print_rewritten"]           = "off"
default["postgresql"]["debug_print_plan"]                = "off"
default["postgresql"]["debug_pretty_print"]              = "on"
default["postgresql"]["log_checkpoints"]                 = "off"
default["postgresql"]["log_connections"]                 = "off"
default["postgresql"]["log_disconnections"]              = "off"
default["postgresql"]["log_duration"]                    = "off"
default["postgresql"]["log_error_verbosity"]             = "default"
default["postgresql"]["log_hostname"]                    = "off"
default["postgresql"]["log_line_prefix"]                 = "%t "
default["postgresql"]["log_lock_waits"]                  = "off"
default["postgresql"]["log_statement"]                   = "none"
default["postgresql"]["log_temp_files"]                  = -1
default["postgresql"]["log_timezone"]                    = "(defaults to server environment setting)"


#------------------------------------------------------------------------------
# RUNTIME STATISTICS
#------------------------------------------------------------------------------

# query/index statistics collector
default["postgresql"]["track_activities"]                = "on"
default["postgresql"]["track_counts"]                    = "on"
default["postgresql"]["track_functions"]                 = "none"
default["postgresql"]["track_activity_query_size"]       = 1024
default["postgresql"]["update_process_title"]            = "on"
default["postgresql"]["stats_temp_directory"]            = 'pg_stat_tmp'

# statistics monitoring
default["postgresql"]["log_parser_stats"]                = "off"
default["postgresql"]["log_planner_stats"]               = "off"
default["postgresql"]["log_executor_stats"]              = "off"
default["postgresql"]["log_statement_stats"]             = "off"


#------------------------------------------------------------------------------
# AUTOVACUUM PARAMETERS
#------------------------------------------------------------------------------

default["postgresql"]["autovacuum"]                      = "on"
default["postgresql"]["log_autovacuum_min_duration"]     = -1
default["postgresql"]["autovacuum_max_workers"]          = 3
default["postgresql"]["autovacuum_naptime"]              = "1min"
default["postgresql"]["autovacuum_vacuum_threshold"]     = 50
default["postgresql"]["autovacuum_analyze_threshold"]    = 50
default["postgresql"]["autovacuum_vacuum_scale_factor"]  = 0.2
default["postgresql"]["autovacuum_analyze_scale_factor"] = 0.1
default["postgresql"]["autovacuum_freeze_max_age"]       = 200000000
default["postgresql"]["autovacuum_vacuum_cost_delay"]    = "20ms"
default["postgresql"]["autovacuum_vacuum_cost_limit"]    = -1


#------------------------------------------------------------------------------
# CLIENT CONNECTION DEFAULTS
#------------------------------------------------------------------------------

# statement behavior
default["postgresql"]["search_path"]                     = '"$user",public'
default["postgresql"]["default_tablespace"]              = ""
default["postgresql"]["temp_tablespaces"]                = ""
default["postgresql"]["check_function_bodies"]           = "on"
default["postgresql"]["default_transaction_isolation"]   = "read committed"
default["postgresql"]["default_transaction_read_only"]   = "off"
default["postgresql"]["default_transaction_deferrable"]  = "off"
default["postgresql"]["session_replication_role"]        = "origin"
default["postgresql"]["statement_timeout"]               = 0
default["postgresql"]["vacuum_freeze_min_age"]           = 50000000
default["postgresql"]["vacuum_freeze_table_age"]         = 150000000
default["postgresql"]["bytea_output"]                    = "hex"
default["postgresql"]["xmlbinary"]                       = "base64"
default["postgresql"]["xmloption"]                       = "content"

# locale and formatting
default["postgresql"]["datestyle"]                       = "iso, mdy"
default["postgresql"]["intervalstyle"]                   = "postgres"
default["postgresql"]["timezone"]                        = "(defaults to server environment setting)"
default["postgresql"]["timezone_abbreviations"]          = "Default"
default["postgresql"]["extra_float_digits"]              = 0
default["postgresql"]["client_encoding"]                 = "sql_ascii"

# These settings are initialized by initdb, but they can be changed.
default["postgresql"]["lc_messages"]                     = "en_US.UTF-8"
default["postgresql"]["lc_monetary"]                     = "en_US.UTF-8"
default["postgresql"]["lc_numeric"]                      = "en_US.UTF-8"
default["postgresql"]["lc_time"]                         = "en_US.UTF-8"

# default configuration for text search
default["postgresql"]["default_text_search_config"]      = "pg_catalog.english"

# other defaults
default["postgresql"]["dynamic_library_path"]            = "$libdir"
default["postgresql"]["local_preload_libraries"]         = ""


#------------------------------------------------------------------------------
# LOCK MANAGEMENT
#------------------------------------------------------------------------------

default["postgresql"]["deadlock_timeout"]                = "1s"
default["postgresql"]["max_locks_per_transaction"]       = 64
default["postgresql"]["max_pred_locks_per_transaction"]  = 64


#------------------------------------------------------------------------------
# VERSION/PLATFORM COMPATIBILITY
#------------------------------------------------------------------------------

# previous postgresql versions
default["postgresql"]["array_nulls"]                     = "on"
default["postgresql"]["backslash_quote"]                 = "safe_encoding"
default["postgresql"]["default_with_oids"]               = "off"
default["postgresql"]["escape_string_warning"]           = "on"
default["postgresql"]["lo_compat_privileges"]            = "off"
default["postgresql"]["quote_all_identifiers"]           = "off"
default["postgresql"]["sql_inheritance"]                 = "on"
default["postgresql"]["standard_conforming_strings"]     = "on"
default["postgresql"]["synchronize_seqscans"]            = "on"

# other platforms and clients
default["postgresql"]["transform_null_equals"]           = "off"


#------------------------------------------------------------------------------
# ERROR HANDLING
#------------------------------------------------------------------------------

default["postgresql"]["exit_on_error"]                   = "off"
default["postgresql"]["restart_after_crash"]             = "on"


#------------------------------------------------------------------------------
# USERS AND DATABASES
#------------------------------------------------------------------------------

default["postgresql"]["users"]                           = []
default["postgresql"]["databases"]                       = []
default["postgresql"]["extensions"]                      = []
default["postgresql"]["languages"]                       = []



#------------------------------------------------------------------------------
# CUSTOMIZED OPTIONS
#------------------------------------------------------------------------------

default["postgresql"]["custom_variable_classes"]         = ""


#------------------------------------------------------------------------------
# POSTGIS OPTIONS
#------------------------------------------------------------------------------

default["postgis"]["version"] = "2.1"

TODO

  • Add support for replication setup
  • Add installation and configuration for the following packages:
postgresql-{version}-ip4r
postgresql-{version}-pgq3
postgresql-{version}-pgmp
postgresql-{version}-plproxy
postgresql-{version}-repmgr
postgresql-{version}-debversion
postgresql-{version}-pgpool2
postgresql-{version}-slony1-2

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Contributors

Many thanks go to the following who have contributed to making this cookbook even better:

  • @flashingpumpkin
    • recipe bugfixes
    • add pg_user and pg_database definitions
  • @cmer
    • add encrypted_password param for pg_user definition
  • @dickeyxxx
    • speed up recipe loading and execution
    • add support for specifying database locale
    • add support for adding users and databases via attributes
  • @alno
    • add support to install additional languages/extensions/postgis to existing databases
    • add pg_database_extensions definition
  • @ermolaev
    • improve platform check for source repo
    • support debian 7 (wheezy)
  • @escobera
    • fix for missing ssl directives in postgresql.conf
  • @cdoughty77
    • allow finer tuning inside pg_hba.conf file
  • @NOX73
    • fix postgresql.conf ssl parameter failure on 9.1
  • @navinpeiris
    • add ability to configure apt distribution
  • @michihuber
    • create data/config dirs recursively
  • @sethcall
    • allow 'lazy' evaluation of configs in the custom template
  • @jherdman
    • update README to include updated apt repository link
    • add support for version 9.3
  • @stianselland
    • fix idempotence for pg_user definition
  • @alenia
    • conditionally override attributes in postgresql.conf
    • support for customizable apt sources
    • add ability to use an apt keyserver
  • @Randommood
    • conditionally override attributes in postgresql.conf
    • support for customizable apt sources
    • add ability to use an apt keyserver
  • @vrischmann
    • uncomment wal_writer_delay attribute
  • @brainopia
    • support encrypted_password in the pg_user recipe
  • @tpitale
    • update example encoding/locales in README to fix error
  • @seamusabshere
    • uncomment various configuration settings
    • uncomment more configuration settings
    • uncomment commit_delay and temp_buffers settings
    • uncomment random_page_cost and seq_page_cost settings
  • @RichardWigley
    • fix empty password causes exception
  • @phumpal
    • update default["postgresql"]["apt_key"] to new location
  • @mjallday
    • allow controlling how to restart postgres
  • @cgunther
    • uncomment log_filename attribute
  • @rosenfeld
    • ensure proper database is selected in pg_database definition
  • @j-martin
    • ensure proper quoting of role name in pg_user definition
  • @helgi
    • add replication mode to pg_user definition
  • @vesln
    • add missing ssl_ca_file and ssl_crl_file attributes to the configuration template
  • @vivid-inc
    • add service_actions attribute
  • @rmoriz
    • remove redundant postgis attribute

License

chef-postgresql

More Repositories

1

chef-libqt4

Chef cookbook for libqt4
Ruby
344
star
2

chef-monit

Chef cookbook for monit package
Ruby
67
star
3

markitup-rails

The markItUp! universal markup editor, bundled for Rails 3.1+ Asset Pipeline.
Ruby
54
star
4

chef-redis

Chef cookbook for Redis
Ruby
27
star
5

chef-nginx

Chef cookbook for Nginx
Ruby
18
star
6

chef-nodejs

Chef cookbook for node.js
Ruby
17
star
7

sugar-rails

Sugar, tastefully bundled for the Rails 3.0 and up. Sweet!
JavaScript
16
star
8

pinboard_api

A Ruby client for the Pinboard.in API
Ruby
16
star
9

chef-newrelic-sysmond

Chef cookbook for newrelic-sysmond
Ruby
16
star
10

rebuild-iptables

Construct an iptables rules file from fragments
Ruby
12
star
11

chef-curl

Chef cookbook for curl
Ruby
7
star
12

fancy-photoset

A jQuery plugin for viewing Flickr Photostreams in a Fancybox gallery
JavaScript
7
star
13

chef-htop

Chef cookbook for htop
Ruby
6
star
14

chef-sysstat

Chef cookbook for sysstat package
Ruby
6
star
15

chef-denyhosts

Chef cookbook for denyhosts package
Ruby
6
star
16

farbtastic-rails

Farbtastic jQuery Color Picker packaged for Rails 3+
Ruby
5
star
17

modernizr-rails

Modernizr, tastefully bundled for the Rails 3.1 asset pipeline. Sweet!
Ruby
5
star
18

codecademy-js-as-coffeescript

toying with Codecademy JavaScript Course - as expressed in CoffeeScript
CoffeeScript
3
star
19

chef-virtualbox

Chef cookbook for virtualbox
Ruby
3
star
20

chaves-rails

chaves.js, bundled for Rails 3.0 and up
Ruby
3
star
21

chef-grc

Chef cookbook for grc "Generic Colouriser"
Ruby
3
star
22

pony_gmail

A simple helper library to send email through Gmail or Google Apps via Pony. Works well on Heroku.
Ruby
3
star
23

kidsruby-editor-coffeescript-chromeless

An experiment building a javascript-powered desktop app with different technologies
JavaScript
3
star
24

chef-personality

This cookbook customizes the motd/login feedback by adding fortunes, read by adorable cowsay characters, wrapped up in rainbow lolcat sprinkles
Ruby
3
star
25

chef-pdf2image

Chef cookbook for pdf2image
Ruby
2
star
26

keymaster-rails

Keymaster.js, bundled for Rails 3.0 and up.
Ruby
2
star
27

coursera-saas-course

My homework assignments for the Coursera "Software Engineering for SaaS" course
Ruby
2
star
28

chef-mdadm

Chef cookbook for mdadm
Ruby
2
star
29

chef-cmake

Chef cookbook for cmake
Ruby
2
star
30

fancybox-rails

Fancybox, tastefully bundled for the Rails 3.1 asset pipeline. Sweet!
Ruby
2
star
31

chef-scout-agent

Chef cookbook to install Scout Monitoring Agent through RVM
Ruby
2
star
32

chef-ec2-bootstrap

Bootstrap script for ec2 to setup chef on Ubuntu nodes
Shell
2
star
33

chef-uck

Chef cookbook for UCK - Ubuntu Customization Kit
Ruby
2
star
34

chef-bash-completion

Chef cookbook for bash-completion package
Ruby
2
star
35

install-textmate-bundles

Automatically fetch the TextMate bundles I generally keep handy
Shell
2
star
36

rails-test-toolbox

An opinionated list of helpful testing tools for working with Ruby on Rails.
Ruby
2
star
37

ichannel

A modern, flexible, & easy-to-use interprocess communication(IPC) primitive.
Ruby
2
star
38

dead_letter_office

This project implements a Dead letter office (mail recovery center) as an engine for your Rails 3 application.
Ruby
2
star
39

keyboardjs-rails

KeyboardJS, typed up for Rails 3.0 and up. Sweet!
Ruby
1
star
40

chef-xpdf

Chef cookbook for Xpdf
Ruby
1
star
41

mustached-octo-hipster

Hipsterize your ssh-config management. (it's like instagram for your ssh-config)
Ruby
1
star
42

chef-unattended-upgrades

Chef cookbook for unattended-upgrades on Ubuntu
Ruby
1
star
43

chef-brightbox-ruby

Chef cookbook to install Ruby from the Brightbox Ruby NG PPA repository
Ruby
1
star
44

cpan_list

Print out installed CPAN packages along with a note about new versions available
Perl
1
star
45

try_git

1
star
46

phlipper.github.com

HTML
1
star
47

meal_plan

An opinionated set of generators to aid development of Chef cookbooks
Ruby
1
star
48

chef-pygments

Chef cookbook for pygments
Ruby
1
star
49

pman

(batch) print or view PDF man pages from the command line
Shell
1
star
50

chef-xfce4

Chef cookbook for Xfce 4
Ruby
1
star
51

codecademy-javascript

my personal late-night exploration of, and experiments with, the Codecademy JavaScript Course
1
star
52

chef-wifi-networking

Chef cookbook for Ubuntu WiFi Networking
Ruby
1
star
53

lpthw

my exploration of Zed Shaw's "Learn Python The Hard Way"
Python
1
star
54

chef-ubuntu-base

Bootstrap an opinionated Ubuntu base image
Ruby
1
star
55

chef-gosu

Chef cookbook for gosu
Ruby
1
star
56

chef-xslt

Chef cookbook to install development packages for libxslt
Ruby
1
star
57

keytar

a METAR JSON API service powered by Node.js
CoffeeScript
1
star
58

chef-traceroute

Chef cookbook to install the `traceroute` utility
Ruby
1
star
59

rails-development-toolbox

An opinionated list of helpful development tools for working with Ruby on Rails.
Ruby
1
star
60

beandip

Rack based app with JSON API and views for beanstalk instances
Ruby
1
star
61

chef-zip

Chef cookbook for zip and unzip
Ruby
1
star