Repository: incubator-ranger Updated Branches: refs/heads/master 4a34f48af -> cf05516bf
Add ability to run setup without separate DBA step (to match earlier behavior) Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/cf05516b Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/cf05516b Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/cf05516b Branch: refs/heads/master Commit: cf05516bf556ac325d524b694c2ec241306ff4fe Parents: 4a34f48 Author: Velmurugan Periasamy <[email protected]> Authored: Fri Mar 20 03:07:44 2015 -0400 Committer: Velmurugan Periasamy <[email protected]> Committed: Fri Mar 20 03:07:44 2015 -0400 ---------------------------------------------------------------------- security-admin/scripts/dba_script.py | 203 ++++++++++++++----------- security-admin/scripts/install.properties | 3 + security-admin/scripts/setup.sh | 27 ++++ 3 files changed, 148 insertions(+), 85 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/cf05516b/security-admin/scripts/dba_script.py ---------------------------------------------------------------------- diff --git a/security-admin/scripts/dba_script.py b/security-admin/scripts/dba_script.py index 9680bfa..c313bfc 100644 --- a/security-admin/scripts/dba_script.py +++ b/security-admin/scripts/dba_script.py @@ -42,7 +42,7 @@ def log(msg,type): logging.exception(" %s",msg) if type == 'error': logging.error(" %s",msg) -''' + def populate_global_dict(): global globalDict read_config_file = open(os.path.join(os.getcwd(),'install.properties')) @@ -59,7 +59,6 @@ def populate_global_dict(): value = '' value = value.strip() globalDict[key] = value -''' class BaseDB(object): @@ -735,51 +734,72 @@ class SqlServerConf(BaseDB): self.grant_xa_db_user(audit_db_root_user, audit_db_name, db_user, db_password, audit_db_root_password, True) -def main(): - #populate_global_dict() +def main(argv): + + quiteMode = False + if len(argv) > 1 and str(argv[1]) == "-q": + #print str(argv) + quiteMode = True + populate_global_dict() + print "Running DBA setup script. QuiteMode:" + str(quiteMode) + FORMAT = '%(asctime)-15s %(message)s' logging.basicConfig(format=FORMAT, level=logging.DEBUG) DBA_MODE = 'TRUE' - #JAVA_BIN=globalDict['JAVA_BIN'] - if os.environ['JAVA_HOME'] == "": + if (quiteMode): + JAVA_BIN=globalDict['JAVA_BIN'] + else: + if os.environ['JAVA_HOME'] == "": log("[E] --------- JAVA_HOME environment property not defined, aborting installation! ---------", "error") sys.exit(1) - JAVA_BIN=os.environ['JAVA_HOME']+'/bin/java' - while os.path.isfile(JAVA_BIN) == False: - log("Enter java executable path: :","info") - JAVA_BIN=raw_input() - - #XA_DB_FLAVOR=globalDict['DB_FLAVOR'] - #AUDIT_DB_FLAVOR=globalDict['DB_FLAVOR'] - XA_DB_FLAVOR='' - while XA_DB_FLAVOR == "": - log("Enter db flavour{MYSQL|ORACLE|POSTGRES|SQLSERVER} :","info") - XA_DB_FLAVOR=raw_input() - AUDIT_DB_FLAVOR = XA_DB_FLAVOR - XA_DB_FLAVOR = XA_DB_FLAVOR.upper() + JAVA_BIN=os.environ['JAVA_HOME']+'/bin/java' + while os.path.isfile(JAVA_BIN) == False: + log("Enter java executable path: :","info") + JAVA_BIN=raw_input() + #print "Using Java:" + str(JAVA_BIN) + + if (quiteMode): + XA_DB_FLAVOR=globalDict['DB_FLAVOR'] + AUDIT_DB_FLAVOR=globalDict['DB_FLAVOR'] + else: + XA_DB_FLAVOR='' + while XA_DB_FLAVOR == "": + log("Enter db flavour{MYSQL|ORACLE|POSTGRES|SQLSERVER} :","info") + XA_DB_FLAVOR=raw_input() + AUDIT_DB_FLAVOR = XA_DB_FLAVOR + XA_DB_FLAVOR = XA_DB_FLAVOR.upper() AUDIT_DB_FLAVOR = AUDIT_DB_FLAVOR.upper() - - CONNECTOR_JAR='' - if XA_DB_FLAVOR == "MYSQL" or XA_DB_FLAVOR == "ORACLE" or XA_DB_FLAVOR == "POSTGRES" or XA_DB_FLAVOR == "SQLSERVER": - log("Enter JDBC connector file for :"+XA_DB_FLAVOR,"info") - CONNECTOR_JAR=raw_input() - while os.path.isfile(CONNECTOR_JAR) == False: - log("JDBC connector file "+CONNECTOR_JAR+" does not exist, Please enter connector path :","error") - CONNECTOR_JAR=raw_input() + #print "XA_DB_FLAVOR:" + str(XA_DB_FLAVOR) + #print "AUDIT_DB_FLAVOR:" + str(AUDIT_DB_FLAVOR) + + if (quiteMode): + CONNECTOR_JAR=globalDict['SQL_CONNECTOR_JAR'] + else: + #CONNECTOR_JAR='' + if XA_DB_FLAVOR == "MYSQL" or XA_DB_FLAVOR == "ORACLE" or XA_DB_FLAVOR == "POSTGRES" or XA_DB_FLAVOR == "SQLSERVER": + log("Enter JDBC connector file for :"+XA_DB_FLAVOR,"info") + CONNECTOR_JAR=raw_input() + while os.path.isfile(CONNECTOR_JAR) == False: + log("JDBC connector file "+CONNECTOR_JAR+" does not exist, Please enter connector path :","error") + CONNECTOR_JAR=raw_input() + else: + log("[E] --------- NO SUCH SUPPORTED DB FLAVOUR!! ---------", "error") + sys.exit(1) + + if (quiteMode): + xa_db_host = globalDict['db_host'] + audit_db_host = globalDict['db_host'] else: - log("[E] --------- NO SUCH SUPPORTED DB FLAVOUR!! ---------", "error") - sys.exit(1) - - #xa_db_host = globalDict['db_host'] - #audit_db_host = globalDict['db_host'] - xa_db_host='' - while xa_db_host == "": - log("Enter DB Host :","info") - xa_db_host=raw_input() - audit_db_host=xa_db_host + xa_db_host='' + while xa_db_host == "": + log("Enter DB Host :","info") + xa_db_host=raw_input() + audit_db_host=xa_db_host + #print "xa_db_host:" + str(xa_db_host) + #print "audit_db_host:" + str(audit_db_host) mysql_dbversion_catalog = 'db/mysql/create_dbversion_catalog.sql' #mysql_core_file = globalDict['mysql_core_file'] @@ -809,63 +829,76 @@ def main(): sqlserver_audit_file = 'db/sqlserver/xa_audit_db_sqlserver.sql' sqlserver_patches = 'db/sqlserver/patches' - #db_name = globalDict['db_name'] - #db_user = globalDict['db_user'] - #db_password = globalDict['db_password'] - #xa_db_root_user = globalDict['db_root_user'] - #xa_db_root_password = globalDict['db_root_password'] - - xa_db_root_user='' - while xa_db_root_user == "": - log("Enter db root user:","info") - xa_db_root_user=raw_input() + + if (quiteMode): + xa_db_root_user = globalDict['db_root_user'] + xa_db_root_password = globalDict['db_root_password'] + else: + xa_db_root_user='' + while xa_db_root_user == "": + log("Enter db root user:","info") + xa_db_root_user=raw_input() - log("Enter db root password:","info") - xa_db_root_password = getpass.getpass("Enter db root password:") - - db_name = '' - while db_name == "": - log("Enter DB Name :","info") - db_name=raw_input() - - db_user='' - while db_user == "": - log("Enter db user name:","info") - db_user=raw_input() - - db_password='' - while db_password == "": - log("Enter db user password:","info") - db_password = getpass.getpass("Enter db user password:") + log("Enter db root password:","info") + xa_db_root_password = getpass.getpass("Enter db root password:") + if (quiteMode): + db_name = globalDict['db_name'] + else: + db_name = '' + while db_name == "": + log("Enter DB Name :","info") + db_name=raw_input() + + if (quiteMode): + db_user = globalDict['db_user'] + else: + db_user='' + while db_user == "": + log("Enter db user name:","info") + db_user=raw_input() + + if (quiteMode): + db_password = globalDict['db_password'] + else: + db_password='' + while db_password == "": + log("Enter db user password:","info") + db_password = getpass.getpass("Enter db user password:") x_db_version = 'x_db_version_h' xa_access_audit = 'xa_access_audit' x_user = 'x_portal_user' - #audit_db_name = globalDict['audit_db_name'] - #audit_db_user = globalDict['audit_db_user'] - #audit_db_password = globalDict['audit_db_password'] - #audit_db_root_user = globalDict['db_root_user'] - #audit_db_root_password = globalDict['db_root_password'] - #print "Enter audit_db_root_password :" - audit_db_name='' - while audit_db_name == "": - log("Enter audit db name:","info") - audit_db_name = raw_input() - - audit_db_user='' - while audit_db_user == "": - log("Enter audit user name:","info") - audit_db_user = raw_input() - - audit_db_password='' - while audit_db_password == "": - log("Enter audit db user password:","info") - audit_db_password = getpass.getpass("Enter audit db user password:") + if (quiteMode): + audit_db_name = globalDict['audit_db_name'] + else: + audit_db_name='' + while audit_db_name == "": + log("Enter audit db name:","info") + audit_db_name = raw_input() + + if (quiteMode): + audit_db_user = globalDict['audit_db_user'] + else: + audit_db_user='' + while audit_db_user == "": + log("Enter audit user name:","info") + audit_db_user = raw_input() + + if (quiteMode): + audit_db_password = globalDict['audit_db_password'] + else: + audit_db_password='' + while audit_db_password == "": + log("Enter audit db user password:","info") + audit_db_password = getpass.getpass("Enter audit db user password:") audit_db_root_user = xa_db_root_user audit_db_root_password = xa_db_root_password + #audit_db_root_user = globalDict['db_root_user'] + #audit_db_root_password = globalDict['db_root_password'] + #print "Enter audit_db_root_password :" # log("Enter audit db root user:","info") # audit_db_root_user = raw_input() # log("Enter db root password:","info") @@ -956,4 +989,4 @@ def main(): log("[I] --------- Verifying/Creating audit user --------- ","info") audit_sqlObj.create_auditdb_user(xa_db_host, audit_db_host, db_name, audit_db_name, xa_db_root_user, audit_db_root_user, db_user, audit_db_user, xa_db_root_password, audit_db_root_password, db_password, audit_db_password, DBA_MODE) log("[I] --------- Ranger Policy Manager DB and User Creation Process Completed.. --------- ","info") -main() +main(sys.argv) http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/cf05516b/security-admin/scripts/install.properties ---------------------------------------------------------------------- diff --git a/security-admin/scripts/install.properties b/security-admin/scripts/install.properties index ae66576..2d35771 100644 --- a/security-admin/scripts/install.properties +++ b/security-admin/scripts/install.properties @@ -178,3 +178,6 @@ postgres_audit_file=db/postgres/xa_audit_db_postgres.sql sqlserver_core_file=db/sqlserver/xa_core_db_sqlserver.sql sqlserver_audit_file=db/sqlserver/xa_audit_db_sqlserver.sql cred_keystore_filename=$app_home/WEB-INF/classes/conf/.jceks/rangeradmin.jceks + +# Uncomment the below if the DBA steps need to be run separately +#setup_mode=SeparateDBA http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/cf05516b/security-admin/scripts/setup.sh ---------------------------------------------------------------------- diff --git a/security-admin/scripts/setup.sh b/security-admin/scripts/setup.sh index 4d557d3..3a5df4d 100755 --- a/security-admin/scripts/setup.sh +++ b/security-admin/scripts/setup.sh @@ -74,6 +74,23 @@ get_distro(){ log "[I] Found distribution : $DIST_NAME" } +#Get Properties from File without erroring out if property is not there +#$1 -> propertyName $2 -> fileName $3 -> variableName $4 -> failIfNotFound +getPropertyFromFileNoExit(){ + validateProperty=$(sed '/^\#/d' $2 | grep "^$1" | tail -n 1) # for validation + if test -z "$validateProperty" ; then + log "[E] '$1' not found in $2 file while getting....!!"; + if [ $4 == "true" ] ; then + exit 1; + else + value="" + fi + else + value=`sed '/^\#/d' $2 | grep "^$1" | tail -n 1 | cut -d "=" -f2-` + fi + #echo 'value:'$value + eval $3="'$value'" +} #Get Properties from File #$1 -> propertyName $2 -> fileName $3 -> variableName getPropertyFromFile(){ @@ -185,6 +202,15 @@ check_python_command() { fi } +run_dba_steps(){ + getPropertyFromFileNoExit 'setup_mode' $PROPFILE setup_mode false + if [ "x${setup_mode}x" == "xSeparateDBAx" ]; then + log "[I] Setup mode is set to SeparateDBA. Not Running DBA steps. Please run dba_script.py before running setup..!"; + else + log "[I] Setup mode is not set. Running DBA steps.."; + python dba_script.py -q + fi +} check_db_connector() { log "[I] Checking ${DB_FLAVOR} CONNECTOR FILE : ${SQL_CONNECTOR_JAR}" if test -f "$SQL_CONNECTOR_JAR"; then @@ -1415,6 +1441,7 @@ copy_db_connector #upgrade_db #create_audit_db_user check_python_command +run_dba_steps $PYTHON_COMMAND_INVOKER db_setup.py if [ "$?" == "0" ] then
