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://github.com/uggedal/puppet-module-postgresql.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",
}
(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 0.0.0.0 0.0.0.0 trust