#!/bin/bash #https://gitee.com/inrgihc/greenplum_docker/tree/main PASSWORD=gpadmin ERROR_MSG="[ERROR] " INFO_MSG="[INFO] " function log() { TIME=$(date +"%Y-%m-%d %H:%M:%S") echo "$TIME $1" } function package_install() { log "$INFO_MSG check command package : [ $1 ]" if ! rpm -qa | grep -q "^$1"; then yum install -y $1 package_check_ok else log "$INFO_MSG command [ $1 ] already installed." fi } function package_check_ok() { ret=$? if [ $ret != 0 ]; then log "$ERROR_MSG Install failed, error code is $ret, Check the error log." exit 1 fi } function gpdb_install(){ log "$INFO_MSG Start to install greenplum for single node." package=(epel-release wget) for p in ${package[@]}; do package_install $p done /usr/sbin/groupadd gpadmin /usr/sbin/useradd gpadmin -g gpadmin usermod -G gpadmin gpadmin echo "${PASSWORD}" | passwd --stdin gpadmin sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config sed -i -r 's/^.*StrictHostKeyChecking\s+\w+/StrictHostKeyChecking no/' /etc/ssh/ssh_config sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd systemctl restart sshd su gpadmin -l -c "ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -P \"\"" su gpadmin -l -c "cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys" su gpadmin -l -c "chmod 600 ~/.ssh/authorized_keys" && \ su gpadmin -l -c "ssh-keyscan -H localhost 2>/dev/null | grep rsa | awk '{print \"localhost \" \$2 \" \" \$3 }' >> ~/.ssh/known_hosts" #wget "https://github.com.cnpmjs.org/greenplum-db/gpdb/releases/download/$GPDBVER/open-source-greenplum-db-$GPDBVER-rhel7-x86_64.rpm" yum install -y "/open-source-greenplum-db-$GPDBVER-rhel7-x86_64.rpm" rm -rf "/open-source-greenplum-db-$GPDBVER-rhel7-x86_64.rpm" rm -f /home/gpadmin/gpinitsystem_config_singlenode cat > /home/gpadmin/gpinitsystem_config_singlenode << EOF ARRAY_NAME="Greenplum Data Platform" SEG_PREFIX=gpseg PORT_BASE=6000 declare -a DATA_DIRECTORY=($DATADIR/primary $DATADIR/primary $DATADIR/primary $DATADIR/primary) MASTER_HOSTNAME=localhost MASTER_DIRECTORY=$DATADIR/master MASTER_PORT=5432 TRUSTED_SHELL=ssh CHECK_POINT_SEGMENTS=8 ENCODING=UNICODE EOF cat > /home/gpadmin/gp_hosts_list << EOF localhost EOF cat > /home/gpadmin/initdb_gpdb.sql << EOF ALTER ROLE "gpadmin" WITH PASSWORD '$PASSWORD'; EOF chown -R gpadmin:gpadmin /home/gpadmin log "$INFO_MSG Install single node Greenplum cluster success!" } gpdb_install