X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/86aa5de7d9f2754d50489432ffaa43cba3fa170f..a215ab4e803c5e8c9bae21d62eaccb2052f4f2d2:/src/plugins/domtool-postgres diff --git a/src/plugins/domtool-postgres b/src/plugins/domtool-postgres index 276637f..ded559d 100755 --- a/src/plugins/domtool-postgres +++ b/src/plugins/domtool-postgres @@ -2,10 +2,37 @@ case $1 in adduser) - echo "I would create PostgreSQL user $2." + USERNAME=$2 + DIR=/afs/hcoop.net/common/databases/$USERNAME/postgres + + kinit -k -t /etc/keytabs/root.admin.keytab root/admin + aklog + + if ! vos examine db.$USERNAME >/dev/null 2>/dev/null; then + vos create -server afs -partition a -name db.$USERNAME -maxquota 5000 + fs mkmount -dir /afs/.hcoop.net/common/.databases/$USERNAME -vol db.$USERNAME -rw + vos release common.databases + fs setacl -dir /afs/hcoop.net/common/databases/$USERNAME -acl databases l + fs setacl -dir /afs/hcoop.net/common/databases/$USERNAME -acl system:backup rl + fi + + if ! [ -d $DIR ]; then + sudo -u postgres psql -c "CREATE USER $USERNAME" template1 + mkdir -p $DIR + chown postgres:postgres $DIR + fs setacl -dir $DIR -acl postgres write + fs setacl -dir $DIR -acl databases none + fs setacl -dir $DIR -acl system:backup rl + + sudo -u postgres psql -c "CREATE TABLESPACE user_$USERNAME OWNER $USERNAME LOCATION '$DIR'" template1 + fi ;; createdb) - echo "I would create PostgreSQL table $2_$3 for user $2." + USERNAME=$2 + DBNAME_BASE=$3 + DBNAME="${USERNAME}_${DBNAME_BASE}" + + sudo -u postgres createdb -O $USERNAME -D user_$USERNAME $DBNAME ;; *) echo "Usage: domtool-postgres [adduser | createdb ]"