No description or website provided.
Pull request Compare This branch is 10 commits ahead, 17 commits behind CarePilot:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Puppet PostgreSQL Module

Module for configuring PostgreSQL.

Tested on Debian GNU/Linux 6.0 Squeeze and Ubuntu 10.4 LTS with Puppet 2.6. Patches for other operating systems welcome.


  • Ability to configure authentication settings.


Clone this repo to a postgresql directory under your Puppet modules directory:

git clone git:// postgresql

If you don't have a Puppet Master you can create a manifest file based on the notes below and run Puppet in stand-alone mode providing the module directory you cloned this repo to:

puppet apply --modulepath=modules test_postgresql.pp


To install and configure PostgreSQL, include the module:

include postgresql::server

You can override defaults in the PostgreSQL config by including the module with this special syntax:

class { "postgresql::server": version => "8.4",
                    listen_addresses => 'localhost',
                    max_connections => 100,
                    shared_buffers => '24MB',

If you need language specific PostgreSQL modules include their class:

include postgresql::python
include postgresql::ruby

Creating a database is done with the postgresql::database resource. If the owner does not exist it is created:

postgresql::database { "blog":
  owner => "bloguser",

You can than connect to it with psql -U bloguser blog (password not required).

Note that you'll need to define a global search path for the exec resource to make the postgresql::database resource function properly. This should ideally be placed in manifests/site.pp:

Exec {
  path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",


Enable remote connections from anywhere

(Beware that this isn't safe as really anybody can connect to the server with this setting.)

Tell the server to listen on all interfaces (the nested quotes are important, the resulting value must be '*'):

class { "postgresql::server": version => "8.4",
                    listen_addresses => "'*'",

Modify the configuration to allow all hosts - to postgresql/files/pg_hba.conf add:

host    all         all       trust