Installation

Prequisites

  • Tested on Debian/Ubuntu
  • Python tested with 2.7
  • Any wsgi server, tested with gunicorn
  • recent pip & setuptools
  • Docker Engine >= 1.12.0 (for the docker backend, see postgraas-backends)
  • PostgreSQL Server (for the pg_cluster backend, see postgraas-backends)

Install via pip:

pip install postgraas_server

Docker

Docker is the default backend of Postgraas. To use it, pull the official postgres 9.4 docker image

docker pull postgres:9.4

We need a postgres for the service to persist the information about the created instances and where do we get one? Yes, we create a docker postgres instance just like all other instances.

First we need a config file where we set the credentials for the meta database and this need to be called postgraas_server.cfg and must be located in the CWD:

[metadb]
db_name = postgraas
db_username = postgraas
db_pwd = very_secure_postgraas
host = localhost
port = 5432

For the creation of the meta db container and creation of the schema, there is a convenience entry point:

postgraas_init

With this, everything is prepared and we can start the postgraas server, for example with gunicorn:

gunicorn -w 4 -b 0.0.0.0:8080 postgraas_server.postgraas_api:app

This will start the server, listening on port 8080 and all incoming interfaces (DISCLAIMER: please don’t use anything like this in a production like environment)

Ready to serve your postgres instances!

PostgreSQL Cluster

In case you don’t want to use Docker and just use a plain Postgres cluster instance, you have to add another section to your config to change the default backend:

[backend]
type = pg_cluster
host = localhost
port = 5432
database = postgres
username = postgres
password = S3cr3t

The given user has to be able to create new roles and databases on the specified cluster.

In case you need to log in with usernames of the form <username@hostname>, you can use the optional server config option:

[backend]
type = pg_cluster
host = localhost
port = 5432
database = postgres
username = postgres
password = S3cr3t
server = postgraas-instance-1

Note

A big difference to the Docker backend is that with the pg_cluster backend users only get single database, while for the docker backend they get a whole Postgres instance.