summaryrefslogtreecommitdiffstats
path: root/packaging/installer/kickstart.sh
diff options
context:
space:
mode:
Diffstat (limited to 'packaging/installer/kickstart.sh')
-rwxr-xr-xpackaging/installer/kickstart.sh136
1 files changed, 79 insertions, 57 deletions
diff --git a/packaging/installer/kickstart.sh b/packaging/installer/kickstart.sh
index 9a5e848ba..196b75892 100755
--- a/packaging/installer/kickstart.sh
+++ b/packaging/installer/kickstart.sh
@@ -27,8 +27,6 @@
# External files
PACKAGES_SCRIPT="https://raw.githubusercontent.com/netdata/netdata-demo-site/master/install-required-packages.sh"
-NIGHTLY_PACKAGE_TARBALL="https://storage.googleapis.com/netdata-nightlies/netdata-latest.tar.gz"
-NIGHTLY_PACKAGE_CHECKSUM="https://storage.googleapis.com/netdata-nightlies/sha256sums.txt"
# ---------------------------------------------------------------------------------------------------------------------
# library functions copied from packaging/installer/functions.sh
@@ -97,6 +95,11 @@ run() {
return ${ret}
}
+fatal() {
+ printf >&2 "${TPUT_BGRED}${TPUT_WHITE}${TPUT_BOLD} ABORTED ${TPUT_RESET} ${*} \n\n"
+ exit 1
+}
+
warning() {
printf >&2 "${TPUT_BGRED}${TPUT_WHITE}${TPUT_BOLD} WARNING ${TPUT_RESET} ${*} \n\n"
if [ "${INTERACTIVE}" = "0" ]; then
@@ -107,16 +110,22 @@ warning() {
fi
}
-fatal() {
- printf >&2 "${TPUT_BGRED}${TPUT_WHITE}${TPUT_BOLD} ABORTED ${TPUT_RESET} ${*} \n\n"
- exit 1
+create_tmp_directory() {
+ # Check if tmp is mounted as noexec
+ if grep -Eq '^[^ ]+ /tmp [^ ]+ ([^ ]*,)?noexec[, ]' /proc/mounts; then
+ pattern="$(pwd)/netdata-kickstart-XXXXXX"
+ else
+ pattern="/tmp/netdata-kickstart-XXXXXX"
+ fi
+
+ mktemp -d $pattern
}
download() {
url="${1}"
dest="${2}"
if command -v curl >/dev/null 2>&1; then
- run curl -L --connect-timeout 5 --retry 3 "${url}" >"${dest}" || fatal "Cannot download ${url}"
+ run curl -sSL --connect-timeout 10 --retry 3 "${url}" >"${dest}" || fatal "Cannot download ${url}"
elif command -v wget >/dev/null 2>&1; then
run wget -T 15 -O - "${url}" >"${dest}" || fatal "Cannot download ${url}"
else
@@ -124,6 +133,20 @@ download() {
fi
}
+set_tarball_urls() {
+ if [ "$1" == "stable" ]; then
+ local latest
+ # Simple version
+ # latest="$(curl -sSL https://api.github.com/repos/netdata/netdata/releases/latest | grep tag_name | cut -d'"' -f4)"
+ latest="$(download "https://api.github.com/repos/netdata/netdata/releases/latest" /dev/stdout | grep tag_name | cut -d'"' -f4)"
+ export NETDATA_TARBALL_URL="https://github.com/netdata/netdata/releases/download/$latest/netdata-$latest.tar.gz"
+ export NETDATA_TARBALL_CHECKSUM_URL="https://github.com/netdata/netdata/releases/download/$latest/sha256sums.txt"
+ else
+ export NETDATA_TARBALL_URL="https://storage.googleapis.com/netdata-nightlies/netdata-latest.tar.gz"
+ export NETDATA_TARBALL_CHECKSUM_URL="https://storage.googleapis.com/netdata-nightlies/sha256sums.txt"
+ fi
+}
+
detect_bash4() {
bash="${1}"
if [ -z "${BASH_VERSION}" ]; then
@@ -147,6 +170,40 @@ detect_bash4() {
return 0
}
+dependencies() {
+ SYSTEM="$(uname -s)"
+ OS="$(uname -o)"
+ MACHINE="$(uname -m)"
+
+ echo "System : ${SYSTEM}"
+ echo "Operating System : ${OS}"
+ echo "Machine : ${MACHINE}"
+ echo "BASH major version: ${BASH_MAJOR_VERSION}"
+
+ if [ "${OS}" != "GNU/Linux" ] && [ "${SYSTEM}" != "Linux" ]; then
+ warning "Cannot detect the packages to be installed on a ${SYSTEM} - ${OS} system."
+ else
+ bash="$(command -v bash 2>/dev/null)"
+ if ! detect_bash4 "${bash}"; then
+ warning "Cannot detect packages to be installed in this system, without BASH v4+."
+ else
+ progress "Downloading script to detect required packages..."
+ download "${PACKAGES_SCRIPT}" "${TMPDIR}/install-required-packages.sh"
+ if [ ! -s "${TMPDIR}/install-required-packages.sh" ]; then
+ warning "Downloaded dependency installation script is empty."
+ else
+ progress "Running downloaded script to detect required packages..."
+ run ${sudo} "${bash}" "${TMPDIR}/install-required-packages.sh" ${PACKAGES_INSTALLER_OPTIONS}
+ # shellcheck disable=SC2181
+ if [ $? -ne 0 ] ; then
+ warning "It failed to install all the required packages, but installation might still be possible."
+ fi
+ fi
+
+ fi
+ fi
+}
+
umask 022
sudo=""
@@ -181,6 +238,7 @@ INTERACTIVE=1
PACKAGES_INSTALLER_OPTIONS="netdata"
NETDATA_INSTALLER_OPTIONS=""
NETDATA_UPDATES="--auto-update"
+RELEASE_CHANNEL="nightly"
while [ -n "${1}" ]; do
if [ "${1}" = "all" ]; then
PACKAGES_INSTALLER_OPTIONS="netdata-all"
@@ -192,6 +250,9 @@ while [ -n "${1}" ]; do
# echo >&2 "netdata will not auto-update"
NETDATA_UPDATES=
shift 1
+ elif [ "${1}" = "--stable-channel" ]; then
+ RELEASE_CHANNEL="stable"
+ shift 1
else
break
fi
@@ -202,59 +263,20 @@ if [ "${INTERACTIVE}" = "0" ]; then
NETDATA_INSTALLER_OPTIONS="--dont-wait"
fi
-# ---------------------------------------------------------------------------------------------------------------------
-# detect system parameters and install dependencies
-
-SYSTEM="$(uname -s)"
-OS="$(uname -o)"
-MACHINE="$(uname -m)"
-
-cat <<EOF
-System : ${SYSTEM}
-Operating System : ${OS}
-Machine : ${MACHINE}
-BASH major version: ${BASH_MAJOR_VERSION}
-EOF
-
-# Check if tmp is mounted as noexec
-if grep -Eq '^[^ ]+ /tmp [^ ]+ ([^ ]*,)?noexec[, ]' /proc/mounts; then
- pattern="$(pwd)/netdata-kickstart-XXXXXX"
-else
- pattern="/tmp/netdata-kickstart-XXXXXX"
-fi
+TMPDIR=$(create_tmp_directory)
+cd ${TMPDIR} || :
-tmpdir="$(mktemp -d $pattern)"
-cd "${tmpdir}" || :
-
-if [ "${OS}" != "GNU/Linux" ] && [ "${SYSTEM}" != "Linux" ]; then
- warning "Cannot detect the packages to be installed on a ${SYSTEM} - ${OS} system."
-else
- bash="$(command -v bash 2>/dev/null)"
- if ! detect_bash4 "${bash}"; then
- warning "Cannot detect packages to be installed in this system, without BASH v4+."
- else
- progress "Downloading script to detect required packages..."
- download "${PACKAGES_SCRIPT}" "${tmpdir}/install-required-packages.sh"
- if [ ! -s "${tmpdir}/install-required-packages.sh" ]; then
- warning "Downloaded dependency installation script is empty."
- else
- progress "Running downloaded script to detect required packages..."
- run ${sudo} "${bash}" "${tmpdir}/install-required-packages.sh" ${PACKAGES_INSTALLER_OPTIONS}
- if [ $? -ne 0 ] ; then
- warning "It failed to install all the required packages, but installation might still be possible."
- fi
- fi
-
- fi
-fi
+dependencies
# ---------------------------------------------------------------------------------------------------------------------
-# download netdata nightly package
+# download netdata package
+
+set_tarball_urls "${RELEASE_CHANNEL}"
-download "${NIGHTLY_PACKAGE_CHECKSUM}" "${tmpdir}/sha256sum.txt"
-download "${NIGHTLY_PACKAGE_TARBALL}" "${tmpdir}/netdata-latest.tar.gz"
-if ! grep netdata-latest.tar.gz sha256sum.txt | sha256sum --check - >/dev/null 2>&1; then
- failed "Tarball checksum validation failed. Stopping netdata installation and leaving tarball in ${tmpdir}"
+download "${NETDATA_TARBALL_CHECKSUM_URL}" "${TMPDIR}/sha256sum.txt"
+download "${NETDATA_TARBALL_URL}" "${TMPDIR}/netdata-latest.tar.gz"
+if ! grep netdata-latest.tar.gz "${TMPDIR}/sha256sum.txt" | sha256sum --check - >/dev/null 2>&1; then
+ fatal "Tarball checksum validation failed. Stopping netdata installation and leaving tarball in ${TMPDIR}"
fi
run tar -xf netdata-latest.tar.gz
rm -rf netdata-latest.tar.gz >/dev/null 2>&1
@@ -266,7 +288,7 @@ cd netdata-* || fatal "Cannot cd to netdata source tree"
if [ -x netdata-installer.sh ]; then
progress "Installing netdata..."
run ${sudo} ./netdata-installer.sh ${NETDATA_UPDATES} ${NETDATA_INSTALLER_OPTIONS} "${@}" || fatal "netdata-installer.sh exited with error"
- rm -rf "${tmpdir}" >/dev/null 2>&1
+ rm -rf "${TMPDIR}" >/dev/null 2>&1
else
- fatal "Cannot install netdata from source (the source directory does not include netdata-installer.sh). Leaving all files in ${tmpdir}"
+ fatal "Cannot install netdata from source (the source directory does not include netdata-installer.sh). Leaving all files in ${TMPDIR}"
fi