Signed-off-by: Takuya ASADA <syuu@scylladb.com> Message-Id: <1461174517-12441-2-git-send-email-syuu@scylladb.com>
282 lines
7.1 KiB
Bash
Executable File
282 lines
7.1 KiB
Bash
Executable File
#!/bin/bash -e
|
|
#
|
|
# Copyright (C) 2015 ScyllaDB
|
|
|
|
if [ "`id -u`" -ne 0 ]; then
|
|
echo "Requires root permission."
|
|
exit 1
|
|
fi
|
|
|
|
print_usage() {
|
|
echo "scylla_setup --disks /dev/hda,/dev/hdb... --nic eth0 --ntp-domain centos --ami --developer-mode --no-kernel-check --no-enable-service --no-selinux-setup --no-bootparam-setup --no-ntp-setup --no-raid-setup --no-coredump-setup --no-sysconfig-setup"
|
|
echo " --disks specify disks for RAID"
|
|
echo " --nic specify NIC"
|
|
echo " --ntp-domain specify NTP domain"
|
|
echo " --ami setup AMI instance"
|
|
echo " --developer-mode enable developer mode"
|
|
echo " --no-kernel-check skip kernel version check"
|
|
echo " --no-enable-service skip enabling service"
|
|
echo " --no-selinux-setup skip selinux setup"
|
|
echo " --no-bootparam-setup skip bootparam setup"
|
|
echo " --no-ntp-setup skip ntp setup"
|
|
echo " --no-raid-setup skip raid setup"
|
|
echo " --no-coredump-setup skip coredump setup"
|
|
echo " --no-sysconfig-setup skip sysconfig setup"
|
|
echo " --no-io-setup skip IO configuration setup"
|
|
exit 1
|
|
}
|
|
|
|
interactive_ask_service() {
|
|
echo $1
|
|
while true; do
|
|
echo -n "yes/no: "
|
|
read ans
|
|
case $ans in
|
|
"y" | "yes")
|
|
return 1
|
|
;;
|
|
"n" | "no")
|
|
return 0
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
AMI=0
|
|
DEV_MODE=0
|
|
KERNEL_CHECK=1
|
|
ENABLE_SERVICE=1
|
|
SELINUX_SETUP=1
|
|
BOOTPARAM_SETUP=1
|
|
NTP_SETUP=1
|
|
RAID_SETUP=1
|
|
COREDUMP_SETUP=1
|
|
SYSCONFIG_SETUP=1
|
|
IO_SETUP=1
|
|
|
|
if [ $# -ne 0 ]; then
|
|
INTERACTIVE=0
|
|
else
|
|
INTERACTIVE=1
|
|
fi
|
|
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
"--disks")
|
|
DISKS="$2"
|
|
shift 2
|
|
;;
|
|
"--nic")
|
|
NIC="$2"
|
|
shift 2
|
|
;;
|
|
"--ntp-domain")
|
|
NTP_DOMAIN="$2"
|
|
shift 2
|
|
;;
|
|
"--ami")
|
|
AMI=1
|
|
shift 1
|
|
;;
|
|
"--developer-mode")
|
|
DEV_MODE=1
|
|
shift 1
|
|
;;
|
|
"--no-kernel-check")
|
|
KERNEL_CHECK=0
|
|
shift 1
|
|
;;
|
|
"--no-enable-service")
|
|
ENABLE_SERVICE=0
|
|
shift 1
|
|
;;
|
|
"--no-selinux-setup")
|
|
SELINUX_SETUP=0
|
|
shift 1
|
|
;;
|
|
"--no-bootparam-setup")
|
|
BOOTPARAM_SETUP=0
|
|
shift 1
|
|
;;
|
|
"--no-ntp-setup")
|
|
NTP_SETUP=0
|
|
shift 1
|
|
;;
|
|
"--no-raid-setup")
|
|
RAID_SETUP=0
|
|
shift 1
|
|
;;
|
|
"--no-coredump-setup")
|
|
COREDUMP_SETUP=0
|
|
shift 1
|
|
;;
|
|
"--no-sysconfig-setup")
|
|
SYSCONFIG_SETUP=0
|
|
shift 1
|
|
;;
|
|
"--no-io-setup")
|
|
IO_SETUP=0
|
|
shift 1
|
|
;;
|
|
"-h" | "--help")
|
|
print_usage
|
|
shift 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ $INTERACTIVE -eq 0 ] && [ $RAID_SETUP -eq 1 ] && [ "$DISKS" = "" ]; then
|
|
print_usage
|
|
fi
|
|
if [ $INTERACTIVE -eq 0 ] && [ $SYSCONFIG_SETUP -eq 1 ] && [ "$NIC" = "" ]; then
|
|
print_usage
|
|
fi
|
|
|
|
. /etc/os-release
|
|
|
|
if [ $INTERACTIVE -eq 1 ]; then
|
|
interactive_ask_service "Do you want to run kernel version check?" &&:
|
|
KERNEL_CHECK=$?
|
|
fi
|
|
if [ $KERNEL_CHECK -eq 1 ]; then
|
|
/usr/lib/scylla/scylla_kernel_check
|
|
fi
|
|
|
|
if [ $INTERACTIVE -eq 1 ]; then
|
|
interactive_ask_service "Do you want to enable ScyllaDB services?" &&:
|
|
ENABLE_SERVICE=$?
|
|
fi
|
|
|
|
if [ "$ID" = "ubuntu" ]; then
|
|
dpkg -s scylla-jmx > /dev/null 2>&1 &&:
|
|
NO_SCYLLA_JMX=$?
|
|
else
|
|
rpm -q scylla-jmx > /dev/null 2>&1 &&:
|
|
NO_SCYLLA_JMX=$?
|
|
fi
|
|
|
|
if [ $NO_SCYLLA_JMX -eq 1 ]; then
|
|
echo "scylla-jmx package is not installed."
|
|
exit 1
|
|
fi
|
|
|
|
if [ $ENABLE_SERVICE -eq 1 ]; then
|
|
if [ "$ID" = "fedora" ] || [ "$ID" = "centos" ]; then
|
|
systemctl enable scylla-server.service
|
|
systemctl enable scylla-jmx.service
|
|
systemctl enable collectd.service
|
|
fi
|
|
fi
|
|
|
|
if [ $INTERACTIVE -eq 1 ]; then
|
|
interactive_ask_service "Do you want to disable SELinux?" &&:
|
|
SELINUX_SETUP=$?
|
|
fi
|
|
if [ $SELINUX_SETUP -eq 1 ]; then
|
|
/usr/lib/scylla/scylla_selinux_setup
|
|
fi
|
|
|
|
if [ $INTERACTIVE -eq 1 ]; then
|
|
interactive_ask_service "Do you want to setup bootloader options?" &&:
|
|
BOOTPARAM_SETUP=$?
|
|
fi
|
|
if [ $BOOTPARAM_SETUP -eq 1 ]; then
|
|
/usr/lib/scylla/scylla_bootparam_setup
|
|
fi
|
|
|
|
if [ $INTERACTIVE -eq 1 ]; then
|
|
interactive_ask_service "Do you want to setup NTP?" &&:
|
|
NTP_SETUP=$?
|
|
fi
|
|
if [ $NTP_SETUP -eq 1 ]; then
|
|
if [ "$NTP_DOMAIN" != "" ]; then
|
|
/usr/lib/scylla/scylla_ntp_setup --subdomain $NTP_DOMAIN
|
|
else
|
|
/usr/lib/scylla/scylla_ntp_setup
|
|
fi
|
|
fi
|
|
|
|
if [ $INTERACTIVE -eq 1 ]; then
|
|
interactive_ask_service "Do you want to setup RAID?" &&:
|
|
RAID_SETUP=$?
|
|
if [ $RAID_SETUP -eq 1 ]; then
|
|
echo "Please select disks from following list: "
|
|
while true; do
|
|
lsblk -d -i -n -r|awk '{print $1}'|sed -e ':loop;N;$!b loop;s/\n/ /g'
|
|
echo "type 'done' to finish selection. selected: $DISKS"
|
|
echo -n "> "
|
|
read dsk
|
|
if [ "$dsk" = "done" ]; then
|
|
break
|
|
fi
|
|
if [ "$dsk" = "" ]; then
|
|
continue
|
|
fi
|
|
if [ -b /dev/$dsk ]; then
|
|
if [ "$DISKS" = "" ]; then
|
|
DISKS=/dev/$dsk
|
|
else
|
|
DISKS="$DISKS,/dev/$dsk"
|
|
fi
|
|
else
|
|
echo "/dev/$dsk not found"
|
|
fi
|
|
done
|
|
fi
|
|
fi
|
|
if [ $RAID_SETUP -eq 1 ]; then
|
|
/usr/lib/scylla/scylla_raid_setup --disks $DISKS --update-fstab
|
|
fi
|
|
|
|
if [ $INTERACTIVE -eq 1 ]; then
|
|
interactive_ask_service "Do you want to setup coredump?" &&:
|
|
COREDUMP_SETUP=$?
|
|
fi
|
|
if [ $COREDUMP_SETUP -eq 1 ]; then
|
|
if [ "$DISKS" != "" ]; then
|
|
/usr/lib/scylla/scylla_coredump_setup --dump-to-raiddir
|
|
else
|
|
/usr/lib/scylla/scylla_coredump_setup
|
|
fi
|
|
fi
|
|
|
|
if [ $INTERACTIVE -eq 1 ]; then
|
|
interactive_ask_service "Do you want to setup sysconfig?" &&:
|
|
SYSCONFIG_SETUP=$?
|
|
if [ $SYSCONFIG_SETUP -eq 1 ]; then
|
|
NICS=$(for i in /sys/class/net/*;do nic=`basename $i`; if [ "$nic" != "lo" ]; then echo $nic; fi; done)
|
|
NR_NICS=`echo $NICS|wc -w`
|
|
if [ $NR_NICS -eq 0 ]; then
|
|
echo "NIC not found."
|
|
exit 1
|
|
elif [ $NR_NICS -eq 1 ]; then
|
|
NIC=$NICS
|
|
else
|
|
echo "Please select NIC from following list: "
|
|
while true; do
|
|
echo $NICS
|
|
echo -n "> "
|
|
read NIC
|
|
if [ -e /sys/class/net/$NIC ]; then
|
|
break
|
|
fi
|
|
done
|
|
fi
|
|
fi
|
|
fi
|
|
if [ $SYSCONFIG_SETUP -eq 1 ]; then
|
|
/usr/lib/scylla/scylla_sysconfig_setup --nic $NIC
|
|
fi
|
|
|
|
if [ $INTERACTIVE -eq 1 ]; then
|
|
interactive_ask_service "Do you want to setup IO configuration?" &&:
|
|
IO_SETUP=$?
|
|
fi
|
|
if [ $IO_SETUP -eq 1 ]; then
|
|
/usr/lib/scylla/scylla_io_setup
|
|
fi
|
|
|
|
if [ $DEV_MODE -eq 1 ]; then
|
|
/usr/lib/scylla/scylla_dev_mode_setup --developer-mode 1
|
|
fi
|