Created
May 11, 2013 13:22
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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