influxdb/scripts/post-install.sh

143 lines
3.8 KiB
Bash

#!/bin/bash
BIN_DIR=/usr/bin
DATA_DIR=/var/lib/influxdb
LOG_DIR=/var/log/influxdb
SCRIPT_DIR=/usr/lib/influxdb/scripts
LOGROTATE_DIR=/etc/logrotate.d
INFLUXD_CONFIG_PATH=/etc/influxdb/config.toml
function install_init {
cp -f $SCRIPT_DIR/init.sh /etc/init.d/influxdb
chmod +x /etc/init.d/influxdb
}
function install_systemd {
cp -f $SCRIPT_DIR/influxdb.service /lib/systemd/system/influxdb.service
systemctl enable influxdb
}
function install_update_rcd {
update-rc.d influxdb defaults
}
function install_chkconfig {
chkconfig --add influxdb
}
function should_upgrade {
if [[ ! -s /etc/influxdb/influxdb.conf ]]; then
# No V1 config present, no upgrade needed.
return 1
fi
bolt_dir="/root/.influxdbv2 /var/lib/influxdb/.influxdbv2 /var/lib/influxdb"
for bolt in $bolt_dir; do
if [[ -s ${bolt}/influxd.bolt ]]; then
# Found a bolt file, assume previous v2 upgrade.
return 1
fi
done
return 0
}
function upgrade_notice {
cat << EOF
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Important 1.x to 2.x Upgrade Notice !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Thank you for installing InfluxDB v2. Due to significant changes between
the v1 and v2 versions, upgrading to v2 requires additional steps. If
upgrading to v2 was not intended, simply re-install the v1 package now.
An upgrade helper script is available that should be reviewed and executed
prior to starting the influxdb systemd service. In order to start the v2
upgrade, execute the following:
sudo /usr/share/influxdb/influxdb2-upgrade.sh
Visit our website for complete details on the v1 to v2 upgrade process:
https://docs.influxdata.com/influxdb/v2.0/upgrade/v1-to-v2/
For new or upgrade installations, please review the getting started guide:
https://docs.influxdata.com/influxdb/v2.0/get-started/
EOF
}
function init_config {
mkdir -p $(dirname ${INFLUXD_CONFIG_PATH})
local config_path=${INFLUXD_CONFIG_PATH}
if [[ -s ${config_path} ]]; then
config_path=${INFLUXD_CONFIG_PATH}.defaults
echo "Config file ${INFLUXD_CONFIG_PATH} already exists, writing defaults to ${config_path}"
fi
cat << EOF > ${config_path}
bolt-path = "/var/lib/influxdb/influxd.bolt"
engine-path = "/var/lib/influxdb/engine"
EOF
}
# Add defaults file, if it doesn't exist
if [[ ! -s /etc/default/influxdb2 ]]; then
cat << EOF > /etc/default/influxdb2
INFLUXD_CONFIG_PATH=${INFLUXD_CONFIG_PATH}
EOF
fi
# Remove legacy symlink, if it exists
if [[ -L /etc/init.d/influxdb ]]; then
rm -f /etc/init.d/influxdb
fi
# Distribution-specific logic
if [[ -f /etc/redhat-release ]]; then
# RHEL-variant logic
if command -v systemctl &>/dev/null; then
install_systemd
else
# Assuming sysv
install_init
install_chkconfig
fi
elif [[ -f /etc/debian_version ]]; then
# Ownership for RH-based platforms is set in build.py via the `rmp-attr` option.
# We perform ownership change only for Debian-based systems.
# Moving these lines out of this if statement would make `rmp -V` fail after installation.
chown -R -L influxdb:influxdb $LOG_DIR
chown -R -L influxdb:influxdb $DATA_DIR
chmod 755 $LOG_DIR
chmod 755 $DATA_DIR
# Debian/Ubuntu logic
if command -v systemctl &>/dev/null; then
install_systemd
else
# Assuming sysv
install_init
install_update_rcd
fi
elif [[ -f /etc/os-release ]]; then
source /etc/os-release
if [[ "$NAME" = "Amazon Linux" ]]; then
# Amazon Linux 2+ logic
install_systemd
elif [[ "$NAME" = "Amazon Linux AMI" ]]; then
# Amazon Linux logic
install_init
install_chkconfig
fi
fi
# Check upgrade status
if should_upgrade; then
upgrade_notice
else
init_config
fi