1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-08-01 06:46:55 +03:00

add in amazon quikc installer

This commit is contained in:
David Hill
2018-07-11 15:48:04 -05:00
parent 68c01a3d12
commit e1d0916b6c
4 changed files with 224 additions and 39 deletions

View File

@ -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 quick_installer_multi_server.sh
install(PROGRAMS quick_installer_single_server.sh quick_installer_multi_server.sh quick_installer_amazon.sh
DESTINATION ${ENGINE_BINDIR} COMPONENT platform)

View File

@ -189,6 +189,7 @@ 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;
@ -296,7 +297,7 @@ 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][-qm][-port][-i][-n][-d][-sn][-pm-ip-addrs][-um-ip-addrs]" << 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;
@ -323,6 +324,11 @@ int main(int argc, char *argv[])
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] )
@ -424,11 +430,31 @@ int main(int argc, char *argv[])
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][-qm][-port][-i][-n][-sn][-pm-ip-addrs][-um-ip-addrs]" << 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);
}
}
@ -436,14 +462,25 @@ int main(int argc, char *argv[])
//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() )
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] != '/')
{
cout << " ERROR: Install dir '" << installDir << "' is not absolute" << endl;
@ -462,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 || !multi_server_quick_install)
if (!single_server_quick_install || !multi_server_quick_install || !amazon_quick_install)
{
if (!noPrompting) {
cout << "Prompting instructions:" << endl << endl;
@ -723,6 +760,12 @@ int main(int argc, char *argv[])
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;
@ -943,6 +986,42 @@ int main(int argc, char *argv[])
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
@ -1174,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;
}
@ -1216,7 +1312,7 @@ int main(int argc, char *argv[])
amazonInstall = false;
try {
sysConfig->setConfig(InstallSection, "Cloud", "disable");
sysConfig->setConfig(InstallSection, "Cloud", "disable");
}
catch(...)
{};
@ -1674,6 +1770,7 @@ int main(int argc, char *argv[])
exit(1);
continue;
}
//update count
try {
string ModuleCountParm = "ModuleCount" + oam.itoa(i+1);
@ -1929,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;
@ -2498,7 +2597,7 @@ int main(int argc, char *argv[])
string dbrootList;
if (multi_server_quick_install)
if (multi_server_quick_install || amazon_quick_install)
{
dbrootList = oam.itoa(moduleID);
}
@ -3609,7 +3708,7 @@ bool checkSaveConfigFile()
//check if Columnstore.xml.rpmsave exist
ifstream File (oldFileName.c_str());
if (!File) {
if (single_server_quick_install || multi_server_quick_install)
if (single_server_quick_install || multi_server_quick_install || amazon_quick_install)
{
return true;
}
@ -3621,7 +3720,7 @@ bool checkSaveConfigFile()
}
else
{
if (single_server_quick_install || multi_server_quick_install)
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);

View File

@ -0,0 +1,80 @@
#!/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" : '--systemName='` -eq 13 ]; 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 ""
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

View File

@ -7,32 +7,38 @@
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" : '--systemName='` -eq 13 ]; 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 required"
echo "User Module (um) IP addresses option"
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"
echo "--um-ip-addresses=xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx, optional"
echo "--dist-install Use Distributed Install Option"
echo "--system-name=nnnn System Name, optional"
echo ""
else
echo "quick_installer_multi_server.sh: unknown argument: $arg, use --help for help" 1>&2
echo "quick_installer_multi_server.sh: unknown argument: $arg, enter --help for help" 1>&2
exit 1
fi
done
@ -58,11 +64,11 @@ if [[ $HOME = "/root" ]]; then
echo ""
/usr/local/mariadb/columnstore/bin/post-install
echo "${bold}Run postConfigure script${normal}"
echo ""
echo ""
if [[ $umIpAddrs = "" ]]; then
/usr/local/mariadb/columnstore/bin/postConfigure -qm -pm-ip-addrs $pmIpAddrs $nonDistrubutedInstall
/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
/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}"
@ -71,8 +77,8 @@ else
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
$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
$HOME/mariadb/columnstore/bin/postConfigure -i $HOME/mariadb/columnstore -qm -pm-ip-addrs $pmIpAddrs -um-ip-addrs $umIpAddrs $nonDistrubutedInstall $systemName
fi
fi