You've already forked mariadb-columnstore-engine
							
							
				mirror of
				https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
				synced 2025-10-31 18:30:33 +03:00 
			
		
		
		
	Merge pull request #518 from mariadb-corporation/MCOL-1146
Mcol 1146 - multi node quick install
This commit is contained in:
		| @@ -181,7 +181,6 @@ SET(CPACK_RPM_platform_USER_FILELIST | ||||
| "/usr/local/mariadb/columnstore/bin/resourceReport.sh" | ||||
| "/usr/local/mariadb/columnstore/bin/hadoopReport.sh" | ||||
| "/usr/local/mariadb/columnstore/bin/alarmReport.sh" | ||||
| "/usr/local/mariadb/columnstore/bin/amazonInstaller" | ||||
| "/usr/local/mariadb/columnstore/bin/remote_command_verify.sh" | ||||
| "/usr/local/mariadb/columnstore/bin/disable-rep-columnstore.sh" | ||||
| "/usr/local/mariadb/columnstore/bin/columnstore.service" | ||||
| @@ -217,6 +216,9 @@ SET(CPACK_RPM_platform_USER_FILELIST | ||||
| "/usr/local/mariadb/columnstore/bin/os_detect.sh" | ||||
| "/usr/local/mariadb/columnstore/bin/columnstoreClusterTester.sh" | ||||
| "/usr/local/mariadb/columnstore/bin/mariadb-command-line.sh" | ||||
| "/usr/local/mariadb/columnstore/bin/quick_installer_single_server.sh" | ||||
| "/usr/local/mariadb/columnstore/bin/quick_installer_multi_server.sh" | ||||
| "/usr/local/mariadb/columnstore/bin/quick_installer_amazon.sh" | ||||
| ${ignored}) | ||||
|  | ||||
| SET(CPACK_RPM_libs_USER_FILELIST  | ||||
|   | ||||
| @@ -438,7 +438,7 @@ | ||||
| 		<SystemStartupOffline>n</SystemStartupOffline> | ||||
| 		<InitialInstallFlag>n</InitialInstallFlag> | ||||
| 		<SingleServerInstall>n</SingleServerInstall> | ||||
| 		<ServerTypeInstall>2</ServerTypeInstall> | ||||
| 		<ServerTypeInstall>1</ServerTypeInstall> | ||||
| 		<PMwithUM>n</PMwithUM> | ||||
| 		<MySQLRep>n</MySQLRep> | ||||
| 		<DBRootStorageType>internal</DBRootStorageType> | ||||
|   | ||||
| @@ -37,13 +37,13 @@ install(TARGETS getMySQLpw DESTINATION ${ENGINE_BINDIR} COMPONENT platform) | ||||
|  | ||||
| ########### next target ############### | ||||
|  | ||||
| set(amazonInstaller_SRCS amazonInstaller.cpp helpers.cpp) | ||||
| #set(amazonInstaller_SRCS amazonInstaller.cpp helpers.cpp) | ||||
|  | ||||
| add_executable(amazonInstaller ${amazonInstaller_SRCS}) | ||||
| #add_executable(amazonInstaller ${amazonInstaller_SRCS}) | ||||
|  | ||||
| target_link_libraries(amazonInstaller ${ENGINE_LDFLAGS} readline ncurses ${SNMP_LIBRARIES} ${MARIADB_CLIENT_LIBS} ${ENGINE_EXEC_LIBS}) | ||||
| #target_link_libraries(amazonInstaller ${ENGINE_LDFLAGS} readline ncurses ${SNMP_LIBRARIES} ${MARIADB_CLIENT_LIBS} ${ENGINE_EXEC_LIBS}) | ||||
|  | ||||
| install(TARGETS amazonInstaller DESTINATION ${ENGINE_BINDIR} COMPONENT platform) | ||||
| #install(TARGETS amazonInstaller DESTINATION ${ENGINE_BINDIR} COMPONENT platform) | ||||
|  | ||||
|  | ||||
| ########### next target ############### | ||||
| @@ -59,5 +59,5 @@ install(TARGETS mycnfUpgrade DESTINATION ${ENGINE_BINDIR} COMPONENT platform) | ||||
|  | ||||
| ########### next target ############### | ||||
|  | ||||
| install(PROGRAMS quick_installer_single_server.sh  | ||||
| install(PROGRAMS quick_installer_single_server.sh quick_installer_multi_server.sh quick_installer_amazon.sh | ||||
|         DESTINATION ${ENGINE_BINDIR} COMPONENT platform)                | ||||
|   | ||||
| @@ -99,6 +99,14 @@ typedef struct Performance_Module_struct | ||||
|  | ||||
| typedef std::vector<PerformanceModule> PerformanceModuleList; | ||||
|  | ||||
| typedef struct ModuleIP_struct | ||||
| { | ||||
| 	std::string     IPaddress; | ||||
| 	std::string     moduleName; | ||||
| } ModuleIP; | ||||
|  | ||||
| typedef std::vector<ModuleIP> ModuleIpList; | ||||
|  | ||||
| void offLineAppCheck(); | ||||
| bool setOSFiles(string parentOAMModuleName, int serverTypeInstall); | ||||
| bool checkSaveConfigFile(); | ||||
| @@ -112,7 +120,7 @@ bool makeRClocal(string moduleType, string moduleName, int IserverTypeInstall); | ||||
| bool createDbrootDirs(string DBRootStorageType); | ||||
| bool pkgCheck(std::string columnstorePackage); | ||||
| bool storageSetup(bool amazonInstall); | ||||
| void setSystemName(bool single_server_quick_install = false); | ||||
| void setSystemName(); | ||||
| bool singleServerDBrootSetup(); | ||||
| bool copyFstab(string moduleName); | ||||
| bool attachVolume(string instanceName, string volumeName, string deviceName, string dbrootPath); | ||||
| @@ -121,12 +129,6 @@ void remoteInstallThread(void *); | ||||
|  | ||||
| bool glusterSetup(string password); | ||||
|  | ||||
| typedef struct ModuleIP_struct | ||||
| { | ||||
| 	std::string     IPaddress; | ||||
| 	std::string     moduleName; | ||||
| } ModuleIP; | ||||
|  | ||||
| std::string launchInstance(ModuleIP moduleip); | ||||
|  | ||||
| string columnstorePackage; | ||||
| @@ -150,7 +152,6 @@ string PMVolumeType = "standard"; | ||||
| string PMVolumeIOPS = oam::UnassignedName; | ||||
| string UMVolumeIOPS = oam::UnassignedName; | ||||
|  | ||||
|  | ||||
| int DBRootCount; | ||||
| string deviceName; | ||||
|  | ||||
| @@ -185,6 +186,10 @@ string MySQLRep = "y"; | ||||
| string PMwithUM = "n"; | ||||
| bool amazonInstall = false; | ||||
| bool nonDistribute = false; | ||||
| bool nonDistributeFlag = false; | ||||
| bool single_server_quick_install = false; | ||||
| bool multi_server_quick_install = false; | ||||
| bool amazon_quick_install = false; | ||||
|  | ||||
| string DataFileEnvFile; | ||||
|  | ||||
| @@ -219,8 +224,9 @@ int main(int argc, char *argv[]) | ||||
| 	noPrompting = false; | ||||
| 	string password; | ||||
| 	string cmd; | ||||
| 	bool single_server_quick_install = false; | ||||
| 	 | ||||
| 	string pmIpAddrs = ""; | ||||
| 	string umIpAddrs = ""; | ||||
|  | ||||
| //  	struct sysinfo myinfo;  | ||||
|  | ||||
| 	// hidden options | ||||
| @@ -272,10 +278,12 @@ int main(int argc, char *argv[]) | ||||
| 		if (p && *p) | ||||
| 			HOME = p; | ||||
| 	} | ||||
| 	 | ||||
|  | ||||
| 	for( int i = 1; i < argc; i++ ) | ||||
| 	{ | ||||
| 		if( string("-h") == argv[i] ) { | ||||
| 		if( string("-h") == argv[i] )  | ||||
| 		{ | ||||
| 			cout << endl; | ||||
| 			cout << "This is the MariaDB ColumnStore System Configuration and Installation tool." << endl; | ||||
| 			cout << "It will Configure the MariaDB ColumnStore System based on Operator inputs and" << endl; | ||||
| @@ -289,48 +297,68 @@ int main(int argc, char *argv[]) | ||||
| 			cout << "	Enter one of the options within [], if available, or" << endl; | ||||
| 			cout << "	Enter a new value" << endl << endl; | ||||
| 			cout << endl; | ||||
|    			cout << "Usage: postConfigure [-h][-c][-u][-p][-qs][-port][-i][-n][-sn]" << endl; | ||||
|    			cout << "Usage: postConfigure [-h][-c][-u][-p][-qs][-qm][-qa][-port][-i][-n][-d][-sn][-pm-ip-addrs][-um-ip-addrs][-pm-count][-um-count]" << endl; | ||||
| 			cout << "   -h  Help" << endl; | ||||
| 			cout << "   -c  Config File to use to extract configuration data, default is Columnstore.xml.rpmsave" << endl; | ||||
| 			cout << "   -u  Upgrade, Install using the Config File from -c, default to Columnstore.xml.rpmsave" << endl; | ||||
| 			cout << "	    If ssh-keys aren't setup, you should provide passwords as command line arguments" << endl; | ||||
| 			cout << "   -p  Unix Password, used with no-prompting option" << endl; | ||||
| 			cout << "   -qs  Single Server Quick Install" << endl; | ||||
| 			cout << "   -qs Quick Install - Single Server" << endl; | ||||
| 			cout << "   -qm Quick Install - Multi Server" << endl; | ||||
| 			cout << "   -port MariaDB ColumnStore Port Address" << endl; | ||||
| 			cout << "   -i Non-root Install directory, Only use for non-root installs" << endl; | ||||
| 			cout << "   -n Non-distributed install, meaning it will not install the remote nodes" << endl; | ||||
| 			cout << "   -n Non-distributed install, meaning postConfigure will not install packages on remote nodes" << endl; | ||||
| 			cout << "   -d Distributed install, meaning postConfigure will install packages on remote nodes" << endl; | ||||
| 			cout << "   -sn System Name" << endl; | ||||
| 			cout << "   -pm-ip-addrs Performance Module IP Addresses xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx" << endl; | ||||
| 			cout << "   -um-ip-addrs User Module IP Addresses xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx" << endl; | ||||
| 			exit (0); | ||||
| 		} | ||||
|       		else if( string("-qs") == argv[i] ) | ||||
|       		{ | ||||
| 				single_server_quick_install = true; | ||||
| 				noPrompting = true; | ||||
| 			} | ||||
| 			else if( string("-f") == argv[i] ) | ||||
| 				nodeps = "--nodeps"; | ||||
| 			else if( string("-o") == argv[i] ) | ||||
| 				startOfflinePrompt = true; | ||||
| 			else if( string("-c") == argv[i] ) { | ||||
| 		else if( string("-qs") == argv[i] ) | ||||
| 		{ | ||||
| 			single_server_quick_install = true; | ||||
| 			noPrompting = true; | ||||
| 		} | ||||
| 		else if( string("-qm") == argv[i] ) | ||||
| 		{ | ||||
| 			multi_server_quick_install = true; | ||||
| 			noPrompting = true; | ||||
| 		} | ||||
| 		else if( string("-qa") == argv[i] ) | ||||
| 		{ | ||||
| 			amazon_quick_install = true; | ||||
| 			noPrompting = true; | ||||
| 		} | ||||
| 		else if( string("-f") == argv[i] ) | ||||
| 			nodeps = "--nodeps"; | ||||
| 		else if( string("-o") == argv[i] ) | ||||
| 			startOfflinePrompt = true; | ||||
| 		else if( string("-c") == argv[i] )  | ||||
| 		{ | ||||
| 			i++; | ||||
| 			if (i >= argc ) { | ||||
| 			if (i >= argc )  | ||||
| 			{ | ||||
| 				cout << "   ERROR: Config File not provided" << endl; | ||||
| 				exit (1); | ||||
| 			} | ||||
| 			oldFileName = argv[i]; | ||||
| 			if ( oldFileName.find("Columnstore.xml") == string::npos ) { | ||||
| 			if ( oldFileName.find("Columnstore.xml") == string::npos )  | ||||
| 			{ | ||||
| 				cout << "   ERROR: Config File is not a Columnstore.xml file name" << endl; | ||||
| 				exit (1); | ||||
| 			}			 | ||||
| 		} | ||||
| 		else if( string("-p") == argv[i] ) { | ||||
| 		else if( string("-p") == argv[i] )  | ||||
| 		{ | ||||
| 			i++; | ||||
| 			if (i >= argc ) { | ||||
| 			if (i >= argc )  | ||||
| 			{ | ||||
| 				cout << "   ERROR: Password not provided" << endl; | ||||
| 				exit (1); | ||||
| 			} | ||||
| 			password = argv[i]; | ||||
| 			if ( password.find("-") != string::npos ) { | ||||
| 			if ( password.find("-") != string::npos )  | ||||
| 			{ | ||||
| 				cout << "   ERROR: Valid Password not provided" << endl; | ||||
| 				exit (1); | ||||
| 			}			 | ||||
| @@ -339,10 +367,20 @@ int main(int argc, char *argv[]) | ||||
| 			noPrompting = true; | ||||
| 		// for backward compatibility | ||||
| 		else if( string("-n") == argv[i] ) | ||||
| 		{ | ||||
| 			nonDistribute = true; | ||||
| 		else if( string("-port") == argv[i] ) { | ||||
| 			nonDistributeFlag = true; | ||||
| 		} | ||||
| 		else if( string("-d") == argv[i] ) | ||||
| 		{ | ||||
| 			nonDistribute = false; | ||||
| 			nonDistributeFlag = true; | ||||
| 		} | ||||
| 		else if( string("-port") == argv[i] )  | ||||
| 		{ | ||||
| 			i++; | ||||
| 			if (i >= argc ) { | ||||
| 			if (i >= argc )  | ||||
| 			{ | ||||
| 				cout << "   ERROR: MariaDB ColumnStore Port ID not supplied" << endl; | ||||
| 				exit (1); | ||||
| 			} | ||||
| @@ -353,29 +391,95 @@ int main(int argc, char *argv[]) | ||||
| 				exit (1); | ||||
| 			} | ||||
| 		} | ||||
|         else if( string("-i") == argv[i] ) { | ||||
|         else if( string("-i") == argv[i] )  | ||||
|         { | ||||
|             i++; | ||||
|             if (i >= argc ) { | ||||
|             if (i >= argc )  | ||||
|             { | ||||
|                 cout << "   ERROR: Path not provided" << endl; | ||||
|                 exit (1); | ||||
|             } | ||||
|             installDir = argv[i]; | ||||
|         } | ||||
|         else if( string("-sn") == argv[i] ) { | ||||
|         else if( string("-sn") == argv[i] )  | ||||
|         { | ||||
|             i++; | ||||
|             if (i >= argc ) { | ||||
|             if (i >= argc )  | ||||
|             { | ||||
|                 cout << "   ERROR: System-name not provided" << endl; | ||||
|                 exit (1); | ||||
|             } | ||||
|             systemName = argv[i]; | ||||
|         } | ||||
|         else if( string("-pm-ip-addrs") == argv[i] )  | ||||
|         { | ||||
|             i++; | ||||
|             if (i >= argc )  | ||||
|             { | ||||
|                 cout << "   ERROR: PM-IP-ADRESSES not provided" << endl; | ||||
|                 exit (1); | ||||
|             } | ||||
|             pmIpAddrs = argv[i]; | ||||
|         } | ||||
|         else if( string("-um-ip-addrs") == argv[i] )  | ||||
|         { | ||||
|             i++; | ||||
|             if (i >= argc )  | ||||
|             { | ||||
|                 cout << "   ERROR: UM-IP-ADRESSES not provided" << endl; | ||||
|                 exit (1); | ||||
|             } | ||||
|             umIpAddrs = argv[i]; | ||||
|         } | ||||
|         else if( string("-pm-count") == argv[i] )  | ||||
|         { | ||||
|             i++; | ||||
|             if (i >= argc )  | ||||
|             { | ||||
|                 cout << "   ERROR: PM-COUNT not provided" << endl; | ||||
|                 exit (1); | ||||
|             } | ||||
|             pmNumber = atoi(argv[i]); | ||||
|         } | ||||
|         else if( string("-um-count") == argv[i] )  | ||||
|         { | ||||
|             i++; | ||||
|             if (i >= argc )  | ||||
|             { | ||||
|                 cout << "   ERROR: UM-COUNT not provided" << endl; | ||||
|                 exit (1); | ||||
|             } | ||||
|             umNumber = atoi(argv[i]); | ||||
|         } | ||||
| 		else | ||||
| 		{ | ||||
| 			cout << "   ERROR: Invalid Argument = " << argv[i] << endl; | ||||
|    			cout << "   Usage: postConfigure [-h][-c][-u][-p][-qs][-port][-i][-n][-sn]" << endl; | ||||
|    			cout << "   Usage: postConfigure [-h][-c][-u][-p][-qs][-qm][-qa][-port][-i][-n][-d][-sn][-pm-ip-addrs][-um-ip-addrs][-pm-count][-um-count]" << endl; | ||||
| 			exit (1); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	//check if quick install multi-server has been given ip address | ||||
| 	if (multi_server_quick_install) | ||||
| 	{ | ||||
| 		if ( ( umIpAddrs.empty() && pmIpAddrs.empty() ) || | ||||
| 				( !umIpAddrs.empty() && pmIpAddrs.empty() )) | ||||
| 		{ | ||||
| 			cout << "   ERROR: Multi-Server option entered, but invalid UM/PM IP addresses were provided, exiting" << endl; | ||||
| 			exit(1); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	//check if quick install multi-server has been given ip address | ||||
| 	if (amazon_quick_install) | ||||
| 	{ | ||||
| 		if ( ( umNumber == 0 && pmNumber == 0 ) || | ||||
| 				( umNumber != 0 && pmNumber == 0 ) ) | ||||
| 		{ | ||||
| 			cout << "   ERROR: Amazon option entered, but invalid UM/PM Counts were provided, exiting" << endl; | ||||
| 			exit(1); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if (installDir[0] != '/') | ||||
| 	{ | ||||
| @@ -395,7 +499,7 @@ int main(int argc, char *argv[]) | ||||
| 	cout << "IMPORTANT: This tool requires to run on the Performance Module #1" << endl; | ||||
| 	cout << endl; | ||||
|  | ||||
| 	if (!single_server_quick_install) | ||||
| 	if (!single_server_quick_install || !multi_server_quick_install || !amazon_quick_install) | ||||
| 	{ | ||||
| 			if (!noPrompting) { | ||||
| 				cout << "Prompting instructions:" << endl << endl; | ||||
| @@ -436,49 +540,43 @@ int main(int argc, char *argv[]) | ||||
| 	} | ||||
|  | ||||
| 	//check Config saved files | ||||
| 	if (!single_server_quick_install) | ||||
| 	if ( !checkSaveConfigFile()) | ||||
| 	{ | ||||
| 		if ( !checkSaveConfigFile()) | ||||
| 		{ | ||||
| 			cout << "ERROR: Configuration File not setup" << endl; | ||||
| 			exit(1); | ||||
| 		} | ||||
| 		cout << "ERROR: Configuration File not setup" << endl; | ||||
| 		exit(1); | ||||
| 	} | ||||
| 	 | ||||
| 	//determine package type | ||||
| 	string EEPackageType; | ||||
|  | ||||
| 	if (single_server_quick_install) | ||||
| 	if (!rootUser) | ||||
| 			EEPackageType = "binary"; | ||||
| 	else | ||||
| 	{ | ||||
| 			if (!rootUser) | ||||
| 					EEPackageType = "binary"; | ||||
| 			else | ||||
| 			{ | ||||
| 					int rtnCode = system("rpm -qi mariadb-columnstore-platform > /tmp/columnstore.txt 2>&1"); | ||||
| 					if (WEXITSTATUS(rtnCode) == 0) | ||||
| 							EEPackageType = "rpm"; | ||||
| 					else { | ||||
| 							rtnCode = system("dpkg -s mariadb-columnstore-platform > /tmp/columnstore.txt 2>&1"); | ||||
| 						if (WEXITSTATUS(rtnCode) == 0) | ||||
| 									EEPackageType = "deb"; | ||||
| 							else | ||||
| 									EEPackageType = "binary"; | ||||
| 					} | ||||
| 			int rtnCode = system("rpm -qi mariadb-columnstore-platform > /tmp/columnstore.txt 2>&1"); | ||||
| 			if (WEXITSTATUS(rtnCode) == 0) | ||||
| 					EEPackageType = "rpm"; | ||||
| 			else { | ||||
| 					rtnCode = system("dpkg -s mariadb-columnstore-platform > /tmp/columnstore.txt 2>&1"); | ||||
| 				if (WEXITSTATUS(rtnCode) == 0) | ||||
| 							EEPackageType = "deb"; | ||||
| 					else | ||||
| 							EEPackageType = "binary"; | ||||
| 			} | ||||
| 	} | ||||
|  | ||||
| 			try { | ||||
| 					sysConfig->setConfig(InstallSection, "EEPackageType", EEPackageType); | ||||
| 			} | ||||
| 			catch(...) | ||||
| 			{ | ||||
| 					cout << "ERROR: Problem setting EEPackageType from the MariaDB ColumnStore System Configuration file" << endl; | ||||
| 					exit(1); | ||||
| 			} | ||||
| 	try { | ||||
| 			sysConfig->setConfig(InstallSection, "EEPackageType", EEPackageType); | ||||
| 	} | ||||
| 	catch(...) | ||||
| 	{ | ||||
| 			cout << "ERROR: Problem setting EEPackageType from the MariaDB ColumnStore System Configuration file" << endl; | ||||
| 			exit(1); | ||||
| 	} | ||||
|  | ||||
| 			if ( !writeConfig(sysConfig) ) { | ||||
| 				cout << "ERROR: Failed trying to update MariaDB ColumnStore System Configuration file" << endl; | ||||
| 				exit(1); | ||||
| 			} | ||||
| 	if ( !writeConfig(sysConfig) ) { | ||||
| 		cout << "ERROR: Failed trying to update MariaDB ColumnStore System Configuration file" << endl; | ||||
| 		exit(1); | ||||
| 	} | ||||
| 	 | ||||
| 	//check for local ip address as pm1 | ||||
| @@ -614,12 +712,22 @@ int main(int argc, char *argv[]) | ||||
| 	} | ||||
|  | ||||
| 	//check for non-Distributed Install | ||||
| 	if ( nonDistribute ) | ||||
| 	if ( nonDistributeFlag ) | ||||
| 	{ | ||||
| 	    try { | ||||
| 		oam.setSystemConfig("DistributedInstall", "n"); | ||||
| 	    } | ||||
| 	    catch(...) {} | ||||
| 		if ( nonDistribute ) | ||||
| 		{ | ||||
| 			try { | ||||
| 				oam.setSystemConfig("DistributedInstall", "n"); | ||||
| 			} | ||||
| 			catch(...) {} | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			try { | ||||
| 				oam.setSystemConfig("DistributedInstall", "y"); | ||||
| 			} | ||||
| 			catch(...) {} | ||||
| 		} | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| @@ -638,7 +746,7 @@ int main(int argc, char *argv[]) | ||||
| 	 | ||||
| 	if (single_server_quick_install) | ||||
| 	{ | ||||
| 		cout << "===== Quick Single-Server Install Configuration =====" << endl << endl; | ||||
| 		cout << "===== Quick Install Single-Server Configuration =====" << endl << endl; | ||||
|  | ||||
| 		cout << "Single-Server install is used when there will only be 1 server configured" << endl; | ||||
| 		cout << "on the system. It can also be used for production systems, if the plan is" << endl; | ||||
| @@ -646,6 +754,18 @@ int main(int argc, char *argv[]) | ||||
| 		 | ||||
| 		singleServerInstall = "1"; | ||||
| 	} | ||||
| 	else if (multi_server_quick_install) | ||||
| 	{ | ||||
| 		cout << "===== Quick Install Multi-Server Configuration =====" << endl << endl; | ||||
| 		 | ||||
| 		singleServerInstall = "2"; | ||||
| 	} | ||||
| 	else if (amazon_quick_install) | ||||
| 	{ | ||||
| 		cout << "===== Quick Install Amazon Configuration =====" << endl << endl; | ||||
| 		 | ||||
| 		singleServerInstall = "2"; | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		cout << "===== Setup System Server Type Configuration =====" << endl << endl; | ||||
| @@ -724,7 +844,7 @@ int main(int argc, char *argv[]) | ||||
| 			system(cmd.c_str()); | ||||
| 		} | ||||
|  | ||||
| 		setSystemName(single_server_quick_install); | ||||
| 		setSystemName(); | ||||
|  | ||||
| 		if (!single_server_quick_install) | ||||
| 		{ | ||||
| @@ -796,6 +916,112 @@ int main(int argc, char *argv[]) | ||||
| 	// | ||||
| 	// Multi-server install | ||||
| 	// | ||||
| 	 | ||||
| 	ModuleIP InputModuleIP; | ||||
| 	ModuleIpList InputModuleIPList; | ||||
|  | ||||
| 	int MaxNicID = oam::MAX_NIC; | ||||
|  | ||||
| 	if (multi_server_quick_install) | ||||
| 	{ | ||||
| 		//set configuarion settings for default setup | ||||
| 		try { | ||||
| 			sysConfig->setConfig(InstallSection, "MySQLRep", "y"); | ||||
| 	    } | ||||
| 	    catch(...) | ||||
| 	    {} | ||||
| 	     | ||||
| 	    if (umIpAddrs == "" ) | ||||
| 	    { | ||||
| 			// set Server Type Installation to combined | ||||
| 			try { | ||||
| 				sysConfig->setConfig(InstallSection, "ServerTypeInstall", "2"); | ||||
| 			} | ||||
| 			catch(...) | ||||
| 			{} | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			int id = 1; | ||||
| 			boost::char_separator<char> sep(","); | ||||
| 			boost::tokenizer< boost::char_separator<char> > tokens(umIpAddrs, sep); | ||||
| 			for ( boost::tokenizer< boost::char_separator<char> >::iterator it = tokens.begin(); | ||||
| 				it != tokens.end(); | ||||
| 				++it, ++id) | ||||
| 			{ | ||||
| 				string module = "um" + oam.itoa(id); | ||||
|  | ||||
| 				InputModuleIP.IPaddress = *it; | ||||
| 				InputModuleIP.moduleName = module; | ||||
| 				InputModuleIPList.push_back(InputModuleIP); | ||||
| 			} | ||||
| 			 | ||||
| 			umNumber = id-1; | ||||
| 		} | ||||
| 		 | ||||
| 		if (pmIpAddrs != "" ) | ||||
| 	    { | ||||
| 			int id = 1; | ||||
| 			boost::char_separator<char> sep(","); | ||||
| 			boost::tokenizer< boost::char_separator<char> > tokens(pmIpAddrs, sep); | ||||
| 			for ( boost::tokenizer< boost::char_separator<char> >::iterator it = tokens.begin(); | ||||
| 				it != tokens.end(); | ||||
| 				++it, ++id) | ||||
| 			{ | ||||
| 				string module = "pm" + oam.itoa(id); | ||||
|  | ||||
| 				InputModuleIP.IPaddress = *it; | ||||
| 				InputModuleIP.moduleName = module; | ||||
| 				InputModuleIPList.push_back(InputModuleIP); | ||||
| 			} | ||||
| 			 | ||||
| 			pmNumber = id-1; | ||||
| 		} | ||||
|  | ||||
| 		if ( !writeConfig(sysConfig) )  | ||||
| 		{ | ||||
| 			cout << "ERROR: Failed trying to update MariaDB ColumnStore System Configuration file" << endl; | ||||
| 			exit(1); | ||||
| 		} | ||||
| 		 | ||||
| 		MaxNicID = 1; | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		if (amazon_quick_install) | ||||
| 		{ | ||||
| 			//set configuarion settings for default setup | ||||
| 			try { | ||||
| 				sysConfig->setConfig(InstallSection, "MySQLRep", "y"); | ||||
| 			} | ||||
| 			catch(...) | ||||
| 			{} | ||||
| 			 | ||||
| 			try { | ||||
| 				sysConfig->setConfig(InstallSection, "Cloud", "amazon-vpc"); | ||||
|         	} | ||||
|         	catch(...) | ||||
|         	{} | ||||
| 			 | ||||
| 			if (umNumber == 0 ) | ||||
| 			{ | ||||
| 				// set Server Type Installation to combined | ||||
| 				try { | ||||
| 					sysConfig->setConfig(InstallSection, "ServerTypeInstall", "2"); | ||||
| 				} | ||||
| 				catch(...) | ||||
| 				{} | ||||
| 			} | ||||
|  | ||||
| 			if ( !writeConfig(sysConfig) )  | ||||
| 			{ | ||||
| 				cout << "ERROR: Failed trying to update MariaDB ColumnStore System Configuration file" << endl; | ||||
| 				exit(1); | ||||
| 			} | ||||
| 			 | ||||
| 			MaxNicID = 1; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	cout << endl; | ||||
| 	//cleanup/create local/etc  directory | ||||
| @@ -851,7 +1077,7 @@ int main(int argc, char *argv[]) | ||||
| 		} | ||||
|  | ||||
| 		switch ( IserverTypeInstall ) { | ||||
| 			case (oam::INSTALL_COMBINE_DM_UM_PM):	// combined #1 - dm/um/pm on a single server | ||||
| 			case (oam::INSTALL_COMBINE_DM_UM_PM):	// combined #1 - um/pm on a single server | ||||
| 			{ | ||||
| 				cout << "Combined Server Installation will be performed." << endl; | ||||
| 				cout << "The Server will be configured as a Performance Module." << endl; | ||||
| @@ -986,8 +1212,8 @@ int main(int argc, char *argv[]) | ||||
| 	    } | ||||
|  | ||||
| 	    if ( answer == "y" ) { | ||||
| 		  mysqlRep = true; | ||||
| 		MySQLRep = "y"; | ||||
| 			mysqlRep = true; | ||||
| 			MySQLRep = "y"; | ||||
| 	    } | ||||
| 	    else | ||||
| 	    { | ||||
| @@ -1027,13 +1253,30 @@ int main(int argc, char *argv[]) | ||||
|  | ||||
| 	in.seekg(0, std::ios::end); | ||||
| 	int size = in.tellg(); | ||||
| 	if ( size == 0 || oam.checkLogStatus("/tmp/amazon.log", "not found"))  | ||||
| 	// not running on amazon with ec2-api-tools | ||||
| 	if ( size == 0 || oam.checkLogStatus("/tmp/amazon.log", "not found")) | ||||
| 	{ | ||||
| 		// not running on amazon with ec2-api-tools | ||||
| 		if (amazon_quick_install) | ||||
| 		{ | ||||
| 			cout << "ERROR: Amazon Quick Installer was specified, bu the AMazon CLI API packages isnt installed, exiting" << endl;  | ||||
| 			exit(1); | ||||
| 		} | ||||
|  | ||||
| 		amazonInstall = false; | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		if ( size == 0 || oam.checkLogStatus("/tmp/amazon.log", "not installed"))  | ||||
| 		if ( size == 0 || oam.checkLogStatus("/tmp/amazon.log", "not installed")) | ||||
| 		{ | ||||
| 			// not running on amazon with ec2-api-tools | ||||
| 			if (amazon_quick_install) | ||||
| 			{ | ||||
| 				cout << "ERROR: Amazon Quick Installer was specified, bu the AMazon CLI API packages isnt installed, exiting" << endl;  | ||||
| 				exit(1); | ||||
| 			} | ||||
|  | ||||
| 			amazonInstall = false; | ||||
| 		} | ||||
| 		else | ||||
| 			amazonInstall = true; | ||||
| 	} | ||||
| @@ -1069,7 +1312,7 @@ int main(int argc, char *argv[]) | ||||
| 					    amazonInstall = false; | ||||
|  | ||||
| 					    try { | ||||
| 						sysConfig->setConfig(InstallSection, "Cloud", "disable"); | ||||
| 							sysConfig->setConfig(InstallSection, "Cloud", "disable"); | ||||
| 					    } | ||||
| 					    catch(...) | ||||
| 					    {}; | ||||
| @@ -1463,6 +1706,14 @@ int main(int argc, char *argv[]) | ||||
| 			catch(...) | ||||
| 			{} | ||||
| 		} | ||||
| 		 | ||||
| 		if ( moduleType == "um") | ||||
| 			if ( umNumber != 0 ) | ||||
| 				moduleCount = umNumber; | ||||
| 				 | ||||
| 		if ( moduleType == "pm") | ||||
| 			if ( pmNumber != 0 ) | ||||
| 				moduleCount = pmNumber;				 | ||||
|  | ||||
| 		//verify and setup of modules count | ||||
| 		switch ( IserverTypeInstall ) { | ||||
| @@ -1519,6 +1770,7 @@ int main(int argc, char *argv[]) | ||||
| 					exit(1); | ||||
| 				continue; | ||||
| 			} | ||||
|  | ||||
| 			//update count | ||||
| 			try { | ||||
| 				string ModuleCountParm = "ModuleCount" + oam.itoa(i+1); | ||||
| @@ -1545,7 +1797,7 @@ int main(int argc, char *argv[]) | ||||
| 		//clear any Equipped Module IP addresses that aren't in current ID range | ||||
| 		for ( int j = 0 ; j < listSize ; j++ ) | ||||
| 		{ | ||||
| 			for ( unsigned int k = 1 ; k < MAX_NIC+1 ; k++) | ||||
| 			for ( unsigned int k = 1 ; k < MaxNicID+1 ; k++) | ||||
| 			{ | ||||
| 				string ModuleIPAddr = "ModuleIPAddr" + oam.itoa(j+1) + "-" + oam.itoa(k) + "-" + oam.itoa(i+1); | ||||
| 				if ( !(sysConfig->getConfig(ModuleSection, ModuleIPAddr).empty()) ) { | ||||
| @@ -1594,36 +1846,65 @@ int main(int argc, char *argv[]) | ||||
| 				moduleDisableState = oam::ENABLEDSTATE; | ||||
| 	 | ||||
| 				//setup HostName/IPAddress for each NIC | ||||
| 				for( unsigned int nicID=1 ; nicID < MAX_NIC+1 ; nicID++ ) | ||||
| 				 | ||||
| 				string moduleHostName = oam::UnassignedName; | ||||
| 				string moduleIPAddr = oam::UnassignedIpAddr; | ||||
|  | ||||
| 				bool found = false; | ||||
| 				if (multi_server_quick_install) | ||||
| 				{ | ||||
| 					string moduleHostName = oam::UnassignedName; | ||||
| 					string moduleIPAddr = oam::UnassignedIpAddr; | ||||
| 		 | ||||
| 					DeviceNetworkList::iterator listPT = sysModuleTypeConfig.moduletypeconfig[i].ModuleNetworkList.begin(); | ||||
| 					for( ; listPT != sysModuleTypeConfig.moduletypeconfig[i].ModuleNetworkList.end() ; listPT++) | ||||
| 					ModuleIpList::iterator pt2 = InputModuleIPList.begin(); | ||||
| 					for( ; pt2 != InputModuleIPList.end() ; pt2++) | ||||
| 					{ | ||||
| 						if (newModuleName == (*listPT).DeviceName) { | ||||
| 							if ( nicID == 1 ) { | ||||
| 								moduleDisableState = (*listPT).DisableState; | ||||
| 								if ( moduleDisableState.empty() || | ||||
| 									moduleDisableState == oam::UnassignedName || | ||||
| 									moduleDisableState == oam::AUTODISABLEDSTATE ) | ||||
| 									moduleDisableState = oam::ENABLEDSTATE; | ||||
| 							} | ||||
| 	 | ||||
| 							HostConfigList::iterator pt1 = (*listPT).hostConfigList.begin(); | ||||
| 							for( ; pt1 != (*listPT).hostConfigList.end() ; pt1++) | ||||
| 						if ( (*pt2).moduleName == newModuleName ) | ||||
| 						{ | ||||
| 							moduleHostName = (*pt2).IPaddress; | ||||
| 							moduleIPAddr = (*pt2).IPaddress; | ||||
| 							found = true; | ||||
| 							break; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 				 | ||||
| 				unsigned int nicID=1; | ||||
| 				for(  ; nicID < MaxNicID +1 ; nicID++ ) | ||||
| 				{ | ||||
| 					if ( !found ) | ||||
| 					{ | ||||
| 						moduleHostName = oam::UnassignedName; | ||||
| 						moduleIPAddr = oam::UnassignedIpAddr; | ||||
|  | ||||
| 						DeviceNetworkList::iterator listPT = sysModuleTypeConfig.moduletypeconfig[i].ModuleNetworkList.begin(); | ||||
| 						for( ; listPT != sysModuleTypeConfig.moduletypeconfig[i].ModuleNetworkList.end() ; listPT++) | ||||
| 						{ | ||||
| 							if (newModuleName == (*listPT).DeviceName)  | ||||
| 							{ | ||||
| 								if ((*pt1).NicID == nicID) { | ||||
| 									moduleHostName = (*pt1).HostName; | ||||
| 									moduleIPAddr = (*pt1).IPAddr; | ||||
| 									break; | ||||
| 								if ( nicID == 1 )  | ||||
| 								{ | ||||
| 									moduleDisableState = (*listPT).DisableState; | ||||
| 									if ( moduleDisableState.empty() || | ||||
| 										moduleDisableState == oam::UnassignedName || | ||||
| 										moduleDisableState == oam::AUTODISABLEDSTATE ) | ||||
| 										moduleDisableState = oam::ENABLEDSTATE; | ||||
| 									{ | ||||
| 										HostConfigList::iterator pt1 = (*listPT).hostConfigList.begin(); | ||||
| 										for( ; pt1 != (*listPT).hostConfigList.end() ; pt1++) | ||||
| 										{ | ||||
| 											if ((*pt1).NicID == nicID)  | ||||
| 											{ | ||||
| 												moduleHostName = (*pt1).HostName; | ||||
| 												moduleIPAddr = (*pt1).IPAddr; | ||||
| 												break; | ||||
| 											} | ||||
| 										} | ||||
| 									} | ||||
| 								} | ||||
| 							} | ||||
| 						} | ||||
| 					} | ||||
| 	 | ||||
| 					if ( nicID == 1 ) { | ||||
| 					 | ||||
| 					if ( nicID == 1 )  | ||||
| 					{ | ||||
| 						if ( moduleDisableState != oam::ENABLEDSTATE ) { | ||||
| 							string disabled = "y"; | ||||
| 							while (true) | ||||
| @@ -1705,6 +1986,7 @@ int main(int argc, char *argv[]) | ||||
| 							break; | ||||
| 					} | ||||
|  | ||||
|  | ||||
| 					bool moduleHostNameFound = true; | ||||
| 					if (moduleHostName.empty()) { | ||||
| 						moduleHostNameFound = true; | ||||
| @@ -1744,23 +2026,25 @@ int main(int argc, char *argv[]) | ||||
| 									//check if need to create instance or user enter ID | ||||
| 									string create = "y"; | ||||
| 			 | ||||
| 									while(true) | ||||
| 									if ( !amazon_quick_install ) | ||||
| 									{ | ||||
| 										pcommand = callReadline("Create Instance for " + newModuleName + " [y,n] (y) > "); | ||||
| 										if (pcommand) | ||||
| 										while(true) | ||||
| 										{ | ||||
| 											if (strlen(pcommand) > 0) create = pcommand; | ||||
| 											callFree(pcommand); | ||||
| 											pcommand = callReadline("Create Instance for " + newModuleName + " [y,n] (y) > "); | ||||
| 											if (pcommand) | ||||
| 											{ | ||||
| 												if (strlen(pcommand) > 0) create = pcommand; | ||||
| 												callFree(pcommand); | ||||
| 											} | ||||
| 											if ( create == "y" || create == "n" ) | ||||
| 												break; | ||||
| 											else | ||||
| 												cout << "Invalid Entry, please enter 'y' for yes or 'n' for no" << endl; | ||||
| 											create = "y"; | ||||
| 											if ( noPrompting ) | ||||
| 												exit(1); | ||||
| 										} | ||||
| 										if ( create == "y" || create == "n" ) | ||||
| 											break; | ||||
| 										else | ||||
| 											cout << "Invalid Entry, please enter 'y' for yes or 'n' for no" << endl; | ||||
| 										create = "y"; | ||||
| 										if ( noPrompting ) | ||||
| 											exit(1); | ||||
| 									} | ||||
| 								 | ||||
| 			 | ||||
| 									if ( create == "y" ) { | ||||
| 										ModuleIP moduleip; | ||||
| @@ -2313,28 +2597,35 @@ int main(int argc, char *argv[]) | ||||
|  | ||||
| 					string dbrootList; | ||||
|  | ||||
| 					for ( unsigned int id = 1 ; id < count+1 ;  ) | ||||
| 					if (multi_server_quick_install || amazon_quick_install) | ||||
| 					{ | ||||
| 						string moduledbrootid = "ModuleDBRootID" + oam.itoa(moduleID) + "-" + oam.itoa(id) + "-" + oam.itoa(i+1); | ||||
| 						try { | ||||
| 							string dbrootid = sysConfig->getConfig(ModuleSection, moduledbrootid); | ||||
| 						dbrootList = oam.itoa(moduleID); | ||||
| 					} | ||||
| 					else | ||||
| 					{ | ||||
| 						for ( unsigned int id = 1 ; id < count+1 ;  ) | ||||
| 						{ | ||||
| 							string moduledbrootid = "ModuleDBRootID" + oam.itoa(moduleID) + "-" + oam.itoa(id) + "-" + oam.itoa(i+1); | ||||
| 							try { | ||||
| 								string dbrootid = sysConfig->getConfig(ModuleSection, moduledbrootid); | ||||
|  | ||||
| 							if ( dbrootid != oam::UnassignedName) { | ||||
| 								sysConfig->setConfig(ModuleSection, moduledbrootid, oam::UnassignedName); | ||||
| 								if ( dbrootid != oam::UnassignedName) { | ||||
| 									sysConfig->setConfig(ModuleSection, moduledbrootid, oam::UnassignedName); | ||||
|  | ||||
| 								dbrootList = dbrootList + dbrootid; | ||||
| 								id ++; | ||||
| 								if ( id < count+1 ) | ||||
| 									dbrootList = dbrootList + ","; | ||||
| 									dbrootList = dbrootList + dbrootid; | ||||
| 									id ++; | ||||
| 									if ( id < count+1 ) | ||||
| 										dbrootList = dbrootList + ","; | ||||
| 								} | ||||
| 							} | ||||
| 							catch(...) | ||||
| 							{ | ||||
| 								cout << "ERROR: Problem setting DBRoot ID in the MariaDB ColumnStore System Configuration file" << endl; | ||||
| 								exit(1); | ||||
| 							} | ||||
| 						} | ||||
| 						catch(...) | ||||
| 						{ | ||||
| 							cout << "ERROR: Problem setting DBRoot ID in the MariaDB ColumnStore System Configuration file" << endl; | ||||
| 							exit(1); | ||||
| 						} | ||||
| 					} | ||||
|  | ||||
| 					 | ||||
| 					vector <string> dbroots; | ||||
| 					string tempdbrootList; | ||||
|  | ||||
| @@ -3417,12 +3708,25 @@ bool checkSaveConfigFile() | ||||
| 	//check if Columnstore.xml.rpmsave exist | ||||
| 	ifstream File (oldFileName.c_str()); | ||||
| 	if (!File) { | ||||
| 		if (single_server_quick_install || multi_server_quick_install || amazon_quick_install) | ||||
| 		{ | ||||
| 			return true; | ||||
| 		} | ||||
| 		if ( noPrompting ) { | ||||
| 			cout << endl << "Old Config File not found '" +  oldFileName + "', exiting" << endl; | ||||
| 			exit(1); | ||||
| 		} | ||||
| 		return true; | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		if (single_server_quick_install || multi_server_quick_install || amazon_quick_install) | ||||
| 		{ | ||||
| 			cout << endl << "Quick Install is for fresh installs only, '" +  oldFileName + "' exist, exiting" << endl; | ||||
| 			exit(1); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	File.close(); | ||||
|  | ||||
| 	// If 'oldFileName' isn't configured, exit | ||||
| @@ -4837,7 +5141,7 @@ bool storageSetup(bool amazonInstall) | ||||
| } | ||||
|  | ||||
|  | ||||
| void setSystemName(bool single_server_quick_install) | ||||
| void setSystemName() | ||||
| { | ||||
| 	Oam oam; | ||||
| 	//setup System Name | ||||
| @@ -4856,7 +5160,7 @@ void setSystemName(bool single_server_quick_install) | ||||
| 	if ( systemName.empty() ) | ||||
| 		systemName = "columnstore-1"; | ||||
|  | ||||
| 	if (!single_server_quick_install) | ||||
| 	if (!single_server_quick_install || !multi_server_quick_install) | ||||
| 	{ | ||||
| 		prompt = "Enter System Name (" + systemName + ") > "; | ||||
| 		pcommand = callReadline(prompt.c_str()); | ||||
|   | ||||
							
								
								
									
										81
									
								
								oamapps/postConfigure/quick_installer_amazon.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										81
									
								
								oamapps/postConfigure/quick_installer_amazon.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,81 @@ | ||||
| #!/bin/bash | ||||
| # | ||||
| # $Id: quick_installer_amazon.sh 3705 2018-07-07 19:47:20Z dhill $ | ||||
| # | ||||
| # Poddst- Quick Installer for Amazon MariaDB Columnstore | ||||
|  | ||||
| pmCount="" | ||||
| umCount="" | ||||
| systemName="" | ||||
|  | ||||
| for arg in "$@"; do | ||||
| 	if [ `expr -- "$arg" : '--pm-count='` -eq 11 ]; then | ||||
| 		pmCount="`echo $arg | awk -F= '{print $2}'`" | ||||
| 	elif [ `expr -- "$arg" : '--um-count='` -eq 11 ]; then | ||||
| 		umCount="`echo $arg | awk -F= '{print $2}'`" | ||||
| 	elif [ `expr -- "$arg" : '--system-name='` -eq 14 ]; then | ||||
| 		systemName="`echo $arg | awk -F= '{print $2}'`" | ||||
| 		systemName="-sn "$systemName | ||||
| 	elif [ `expr -- "$arg" : '--dist-install'` -eq 14 ]; then | ||||
| 		nonDistrubutedInstall=" " | ||||
| 	elif [ `expr -- "$arg" : '--help'` -eq 6 ]; then | ||||
| 		echo "Usage ./quick_installer_amazon.sh [OPTION]" | ||||
| 		echo "" | ||||
| 		echo "Quick Installer for an Amazon MariaDB ColumnStore Install" | ||||
| 		echo "This requires to be run on a MariaDB ColumnStore AMI" | ||||
| 		echo "" | ||||
| 		echo "Performace Module (pm) number is required" | ||||
| 		echo "User Module (um) number is option" | ||||
| 		echo "When only pm counts provided, system is combined setup" | ||||
| 		echo "When both pm/um counts provided, system is seperate setup" | ||||
| 		echo | ||||
| 		echo "--pm-count=x Number of pm instances to create" | ||||
| 		echo "--um-count=x Number of um instances to create, optional" | ||||
| 		echo "--system-name=nnnn System Name, optional" | ||||
| 		echo "" | ||||
| 		exit 1 | ||||
| 	else | ||||
| 		echo "./quick_installer_amazon.sh: unknown argument: $arg, enter --help for help" 1>&2 | ||||
| 		exit 1 | ||||
| 	fi | ||||
| done | ||||
|  | ||||
| if [[ $pmCount = "" ]]; then | ||||
| 	echo "" | ||||
| 	echo "Performace Module (pm) count is required, exiting" | ||||
| 	exit 1 | ||||
| else | ||||
| 	if [[ $umCount = "" ]]; then | ||||
| 		echo "" | ||||
| 		echo "NOTE: Performing a Multi-Server Combined install with um/pm running on some server" | ||||
| 		echo"" | ||||
| 	else | ||||
| 		echo "" | ||||
| 		echo "NOTE: Performing a Multi-Server Seperate install with um and pm running on seperate servers" | ||||
| 		echo"" | ||||
| 	fi | ||||
| fi | ||||
|  | ||||
| if [[ $HOME = "/root" ]]; then | ||||
|         echo "${bold}Run post-install script${normal}" | ||||
|         echo "" | ||||
|         /usr/local/mariadb/columnstore/bin/post-install | ||||
|         echo "${bold}Run postConfigure script${normal}" | ||||
|         echo "" | ||||
|         if [[ $umCount = "" ]]; then | ||||
| 			/usr/local/mariadb/columnstore/bin/postConfigure -qa -pm-count $pmCount $systemName | ||||
| 		else | ||||
| 			/usr/local/mariadb/columnstore/bin/postConfigure -qa -pm-count $pmCount -um-count $umCount $systemName | ||||
| 		fi | ||||
| else | ||||
|         echo "${bold}Run post-install script${normal}" | ||||
|         echo "" | ||||
|         $HOME/mariadb/columnstore/bin/post-install --installdir=$HOME/mariadb/columnstore | ||||
|         echo "${bold}Run postConfigure script${normal}" | ||||
|         echo "" | ||||
|         if [[ $umCount = "" ]]; then | ||||
| 			$HOME/mariadb/columnstore/bin/postConfigure -i $HOME/mariadb/columnstore -qa -pm-count $pmCount $systemName | ||||
| 		else | ||||
| 			$HOME/mariadb/columnstore/bin/postConfigure -i $HOME/mariadb/columnstore -qa -pm-count $pmCount -um-count $umCount $systemName | ||||
| 		fi | ||||
| fi | ||||
							
								
								
									
										85
									
								
								oamapps/postConfigure/quick_installer_multi_server.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										85
									
								
								oamapps/postConfigure/quick_installer_multi_server.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,85 @@ | ||||
| #!/bin/bash | ||||
| # | ||||
| # $Id: quick_installer_multi_server.sh 3705 2018-07-07 19:47:20Z dhill $ | ||||
| # | ||||
| # Poddst- Quick Installer for Multi Server MariaDB Columnstore | ||||
|  | ||||
| pmIpAddrs="" | ||||
| umIpAddrs="" | ||||
| nonDistrubutedInstall="-n" | ||||
| systemName="" | ||||
|  | ||||
| for arg in "$@"; do | ||||
| 	if [ `expr -- "$arg" : '--pm-ip-addresses='` -eq 18 ]; then | ||||
| 		pmIpAddrs="`echo $arg | awk -F= '{print $2}'`" | ||||
| 	elif [ `expr -- "$arg" : '--um-ip-addresses='` -eq 18 ]; then | ||||
| 		umIpAddrs="`echo $arg | awk -F= '{print $2}'`" | ||||
| 	elif [ `expr -- "$arg" : '--system-name='` -eq 14 ]; then | ||||
| 		systemName="`echo $arg | awk -F= '{print $2}'`" | ||||
| 		systemName="-sn "$systemName | ||||
| 	elif [ `expr -- "$arg" : '--dist-install'` -eq 14 ]; then | ||||
| 		nonDistrubutedInstall=" " | ||||
| 	elif [ `expr -- "$arg" : '--help'` -eq 6 ]; then | ||||
| 		echo "Usage ./quick_installer_multi_server.sh [OPTION]" | ||||
| 		echo "" | ||||
| 		echo "Quick Installer for a Multi Server MariaDB ColumnStore Install" | ||||
| 		echo "" | ||||
| 		echo "Defaults to non-distrubuted install, meaning MariaDB Columnstore" | ||||
| 		echo "needs to be preinstalled on all nodes in the system" | ||||
| 		echo "" | ||||
| 		echo "Performace Module (pm) IP addresses are required" | ||||
| 		echo "User Module (um) IP addresses are option" | ||||
| 		echo "When only pm IP addresses provided, system is combined setup" | ||||
| 		echo "When both pm/um IP addresses provided, system is seperate setup" | ||||
| 		echo | ||||
| 		echo "--pm-ip-addresses=xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx" | ||||
| 		echo "--um-ip-addresses=xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx, optional" | ||||
| 		echo "--dist-install Use Distributed Install, optional" | ||||
| 		echo "--system-name=nnnn System Name, optional" | ||||
| 		echo "" | ||||
| 		exit 1 | ||||
| 	else | ||||
| 		echo "quick_installer_multi_server.sh: unknown argument: $arg, enter --help for help" 1>&2 | ||||
| 		exit 1 | ||||
| 	fi | ||||
| done | ||||
|  | ||||
| if [[ $pmIpAddrs = "" ]]; then | ||||
| 	echo "" | ||||
| 	echo "Performace Module (pm) IP addresses required, exiting" | ||||
| 	exit 1 | ||||
| else | ||||
| 	if [[ $umIpAddrs = "" ]]; then | ||||
| 		echo "" | ||||
| 		echo "NOTE: Performing a Multi-Server Combined install with um/pm running on some server" | ||||
| 		echo"" | ||||
| 	else | ||||
| 		echo "" | ||||
| 		echo "NOTE: Performing a Multi-Server Seperate install with um and pm running on seperate servers" | ||||
| 		echo"" | ||||
| 	fi | ||||
| fi | ||||
|  | ||||
| if [[ $HOME = "/root" ]]; then | ||||
|         echo "${bold}Run post-install script${normal}" | ||||
|         echo "" | ||||
|         /usr/local/mariadb/columnstore/bin/post-install | ||||
|         echo "${bold}Run postConfigure script${normal}" | ||||
|         echo ""         | ||||
|         if [[ $umIpAddrs = "" ]]; then | ||||
| 			/usr/local/mariadb/columnstore/bin/postConfigure -qm -pm-ip-addrs $pmIpAddrs $nonDistrubutedInstall $systemName | ||||
| 		else | ||||
| 			/usr/local/mariadb/columnstore/bin/postConfigure -qm -pm-ip-addrs $pmIpAddrs -um-ip-addrs $umIpAddrs $nonDistrubutedInstall $systemName | ||||
| 		fi | ||||
| else | ||||
|         echo "${bold}Run post-install script${normal}" | ||||
|         echo "" | ||||
|         $HOME/mariadb/columnstore/bin/post-install --installdir=$HOME/mariadb/columnstore | ||||
|         echo "${bold}Run postConfigure script${normal}" | ||||
|         echo "" | ||||
|         if [[ $umIpAddrs = "" ]]; then | ||||
| 			$HOME/mariadb/columnstore/bin/postConfigure -i $HOME/mariadb/columnstore -qm -pm-ip-addrs $pmIpAddrs $nonDistrubutedInstall $systemName | ||||
| 		else | ||||
| 			$HOME/mariadb/columnstore/bin/postConfigure -i $HOME/mariadb/columnstore -qm -pm-ip-addrs $pmIpAddrs -um-ip-addrs $umIpAddrs $nonDistrubutedInstall $systemName | ||||
| 		fi | ||||
| fi | ||||
							
								
								
									
										14
									
								
								oamapps/postConfigure/quick_installer_single_server.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										14
									
								
								oamapps/postConfigure/quick_installer_single_server.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| @@ -4,6 +4,18 @@ | ||||
| # | ||||
| # Poddst- Quick Installer for Single Server MariaDB Columnstore | ||||
|  | ||||
| for arg in "$@"; do | ||||
| 	if [ `expr -- "$arg" : '--help'` -eq 6 ]; then | ||||
| 		echo "Usage ./quick_installer_multi_server.sh" | ||||
| 		echo "" | ||||
| 		echo "Quick Installer for a Single Server MariaDB ColumnStore Install" | ||||
| 		echo "" | ||||
| 		exit 1 | ||||
| 	else | ||||
| 		echo "quick_installer_multi_server.sh: ignoring unknown argument: $arg" 1>&2 | ||||
| 	fi | ||||
| done | ||||
|  | ||||
|  | ||||
| if [ $HOME == "/root" ]; then | ||||
|         echo "Run post-install script" | ||||
| @@ -18,5 +30,5 @@ else | ||||
|         $HOME/mariadb/columnstore/bin/post-install --installdir=$HOME/mariadb/columnstore | ||||
|         echo "Run postConfigure script" | ||||
|         echo "" | ||||
|         $HOME/mariadb/columnstore/bin/postConfigure -i $HOME/mariadb/columnstore -sq | ||||
|         $HOME/mariadb/columnstore/bin/postConfigure -i $HOME/mariadb/columnstore -qs | ||||
| fi | ||||
|   | ||||
		Reference in New Issue
	
	Block a user