Skip to content

Instantly share code, notes, and snippets.

@fqxp
Created May 11, 2013 13:22
Show Gist options
  • Save fqxp/5559953 to your computer and use it in GitHub Desktop.
Save fqxp/5559953 to your computer and use it in GitHub Desktop.
Set up Postgres server, user and database with fabric. Put into fabfile.py
def _run_as_pg(command):
return sudo('sudo -u postgres %s' % command)
def pg_user_exists(username):
with settings(hide('running', 'stdout', 'stderr', 'warnings'), warn_only=True):
res = _run_as_pg('''psql -t -A -c "SELECT COUNT(*) FROM pg_user WHERE usename = '%(username)s';"''' % locals())
return (res == "1")
def pg_database_exists(database):
with settings(hide('running', 'stdout', 'stderr', 'warnings'), warn_only=True):
res = _run_as_pg('''psql -t -A -c "SELECT COUNT(*) FROM pg_database WHERE datname = '%(database)s';"''' % locals())
return (res == "1")
def pg_create_user(username, password):
_run_as_pg('''psql -t -A -c "CREATE USER %(username)s WITH PASSWORD '%(password)s';"''' % locals())
def pg_create_database(database, owner):
_run_as_pg('createdb %(database)s -O %(owner)s' % locals())
@task
def configure_postgres():
if not pg_user_exists(env.pg_user):
pg_create_user(env.pg_user, env.pg_password)
if not pg_database_exists(env.pg_database):
pg_create_database(env.pg_database, env.pg_user)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment