summaryrefslogtreecommitdiffstats
path: root/packaging/installer/kickstart-ng.sh
diff options
context:
space:
mode:
Diffstat (limited to 'packaging/installer/kickstart-ng.sh')
l---------[-rw-r--r--]packaging/installer/kickstart-ng.sh1363
1 files changed, 1 insertions, 1362 deletions
diff --git a/packaging/installer/kickstart-ng.sh b/packaging/installer/kickstart-ng.sh
index 8fcc6d5d3..71d605e7c 100644..120000
--- a/packaging/installer/kickstart-ng.sh
+++ b/packaging/installer/kickstart-ng.sh
@@ -1,1362 +1 @@
-#!/bin/sh
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-# ======================================================================
-# Constants
-
-KICKSTART_OPTIONS="${*}"
-PACKAGES_SCRIPT="https://raw.githubusercontent.com/netdata/netdata/master/packaging/installer/install-required-packages.sh"
-PATH="${PATH}:/usr/local/bin:/usr/local/sbin"
-REPOCONFIG_URL_PREFIX="https://packagecloud.io/netdata/netdata-repoconfig/packages"
-REPOCONFIG_VERSION="1-1"
-TELEMETRY_URL="https://posthog.netdata.cloud/capture/"
-START_TIME="$(date +%s)"
-
-# ======================================================================
-# Defaults for environment variables
-
-SELECTED_INSTALL_METHOD="none"
-INSTALL_TYPE="unknown"
-INSTALL_PREFIX=""
-NETDATA_AUTO_UPDATES="1"
-NETDATA_CLAIM_ONLY=0
-NETDATA_CLAIM_URL="https://app.netdata.cloud"
-NETDATA_DISABLE_CLOUD=0
-NETDATA_ONLY_BUILD=0
-NETDATA_ONLY_NATIVE=0
-NETDATA_ONLY_STATIC=0
-NETDATA_REQUIRE_CLOUD=1
-RELEASE_CHANNEL="nightly"
-
-NETDATA_DISABLE_TELEMETRY="${DO_NOT_TRACK:-0}"
-NETDATA_TARBALL_BASEURL="${NETDATA_TARBALL_BASEURL:-https://storage.googleapis.com/netdata-nightlies}"
-NETDATA_INSTALLER_OPTIONS="${NETDATA_INSTALLER_OPTIONS:-""}"
-TELEMETRY_API_KEY="${NETDATA_POSTHOG_API_KEY:-mqkwGT0JNFqO-zX2t0mW6Tec9yooaVu7xCBlXtHnt5Y}"
-
-if [ ! -t 1 ]; then
- INTERACTIVE=0
-else
- INTERACTIVE=1
-fi
-
-# ======================================================================
-# Usage info
-
-usage() {
- cat << HEREDOC
-USAGE: kickstart.sh [options]
- where options include:
-
- --non-interactive Do not prompt for user input. (default: prompt if there is a controlling terminal)
- --interactive Prompt for user input even if there is no controlling terminal.
- --dont-start-it Do not start the agent by default (only for static installs or local builds)
- --stable-channel Install a stable version instead of a nightly build (default: install a nightly build)
- --nightly-channel Install a nightly build instead of a stable version
- --no-updates Do not enable automatic updates (default: enable automatic updates)
- --auto-update Enable automatic updates.
- --disable-telemetry Opt-out of anonymous statistics.
- --native-only Only install if native binary packages are available.
- --static-only Only install if a static build is available.
- --build-only Only install using a local build.
- --reinstall Explicitly reinstall instead of updating any existing install.
- --reinstall-even-if-unsafe Even try to reinstall if we don't think we can do so safely (implies --reinstall).
- --disable-cloud Disable support for Netdata Cloud (default: detect)
- --require-cloud Only install if Netdata Cloud can be enabled. Overrides --disable-cloud.
- --install <path> Specify an installation prefix for local builds (default: autodetect based on system type).
- --claim-token Use a specified token for claiming to Netdata Cloud.
- --claim-rooms When claiming, add the node to the specified rooms.
- --claim-only If there is an existing install, only try to claim it, not update it.
- --claim-* Specify other options for the claiming script.
- --no-cleanup Don't do any cleanup steps. This is intended to help with debugging the installer.
-
-Additionally, this script may use the following environment variables:
-
- TMPDIR: Used to specify where to put temporary files. On most systems, the default we select
- automatically should be fine. The user running the script needs to both be able to
- write files to the temporary directory, and run files from that location.
- ROOTCMD: Used to specify a command to use to run another command with root privileges if needed. By
- default we try to use sudo, doas, or pkexec (in that order of preference), but if
- you need special options for one of those to work, or have a different tool to do
- the same thing on your system, you can specify it here.
- DO_NOT_TRACK If set to a value other than 0, behave as if \`--disable-telemetry\` was specified.
- NETDATA_INSTALLER_OPTIONS: Specifies extra options to pass to the static installer or local build script.
-
-HEREDOC
-}
-
-# ======================================================================
-# Telemetry functions
-
-telemetry_event() {
- if [ "${NETDATA_DISABLE_TELEMETRY}" -eq 1 ]; then
- return 0
- fi
-
- now="$(date +%s)"
- total_duration="$((now - START_TIME))"
-
- if [ -e "/etc/os-release" ]; then
- eval "$(grep -E "^(NAME|ID|ID_LIKE|VERSION|VERSION_ID)=" < /etc/os-release | sed 's/^/HOST_/')"
- fi
-
- if [ -z "${HOST_NAME}" ] || [ -z "${HOST_VERSION}" ] || [ -z "${HOST_ID}" ]; then
- if [ -f "/etc/lsb-release" ]; then
- DISTRIB_ID="unknown"
- DISTRIB_RELEASE="unknown"
- DISTRIB_CODENAME="unknown"
- eval "$(grep -E "^(DISTRIB_ID|DISTRIB_RELEASE|DISTRIB_CODENAME)=" < /etc/lsb-release)"
- if [ -z "${HOST_NAME}" ]; then HOST_NAME="${DISTRIB_ID}"; fi
- if [ -z "${HOST_VERSION}" ]; then HOST_VERSION="${DISTRIB_RELEASE}"; fi
- if [ -z "${HOST_ID}" ]; then HOST_ID="${DISTRIB_CODENAME}"; fi
- fi
- fi
-
- KERNEL_NAME="$(uname -s)"
-
- if [ "${KERNEL_NAME}" = FreeBSD ]; then
- TOTAL_RAM="$(sysctl -n hw.physmem)"
- elif [ "${KERNEL_NAME}" = Darwin ]; then
- TOTAL_RAM="$(sysctl -n hw.memsize)"
- elif [ -r /proc/meminfo ]; then
- TOTAL_RAM="$(grep -F MemTotal /proc/meminfo | cut -f 2 -d ':' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | cut -f 1 -d ' ')"
- TOTAL_RAM="$((TOTAL_RAM * 1024))"
- fi
-
- if [ -f /etc/machine-id ]; then
- DISTINCT_ID="$(cat /etc/machine-id)"
- elif command -v uuidgen > /dev/null 2>&1; then
- DISTINCT_ID="$(uuidgen)"
- else
- DISTINCT_ID="null"
- fi
-
- REQ_BODY="$(cat << EOF
-{
- "api_key": "${TELEMETRY_API_KEY}",
- "event": "${1}",
- "properties": {
- "distinct_id": "${DISTINCT_ID}",
- "event_source": "agent installer",
- "\$current_url": "agent installer",
- "\$pathname": "netdata-installer",
- "\$host": "installer.netdata.io",
- "\$ip": "127.0.0.1",
- "script_variant": "kickstart-ng",
- "error_code": "${3}",
- "error_message": "${2}",
- "install_options": "${KICKSTART_OPTIONS}",
- "total_runtime": "${total_duration}",
- "selected_install_method": "${SELECTED_INSTALL_METHOD}",
- "netdata_release_channel": "${RELEASE_CHANNEL:-null}",
- "netdata_install_type": "${INSTALL_TYPE}",
- "host_os_name": "${HOST_NAME:-unknown}",
- "host_os_id": "${HOST_ID:-unknown}",
- "host_os_id_like": "${HOST_ID_LIKE:-unknown}",
- "host_os_version": "${HOST_VERSION:-unknown}",
- "host_os_version_id": "${HOST_VERSION_ID:-unknown}",
- "system_kernel_name": "${KERNEL_NAME}",
- "system_kernel_version": "$(uname -r)",
- "system_architecture": "$(uname -m)",
- "system_total_ram": "${TOTAL_RAM:-unknown}"
- }
-}
-EOF
-)"
-
- if [ -n "$(command -v curl 2> /dev/null)" ]; then
- curl --silent -o /dev/null -X POST --max-time 2 --header "Content-Type: application/json" -d "${REQ_BODY}" "${TELEMETRY_URL}" > /dev/null
- else
- wget -q -O - --no-check-certificate \
- --method POST \
- --timeout=1 \
- --header 'Content-Type: application/json' \
- --body-data "${REQ_BODY}" \
- "${TELEMETRY_URL}" > /dev/null
- fi
-}
-
-trap_handler() {
- code="${1}"
- lineno="${2}"
-
- printf >&2 "%s\n\n" "${TPUT_BGRED}${TPUT_WHITE}${TPUT_BOLD} ERROR ${TPUT_RESET} Installer exited unexpectedly (${code}-${lineno})"
-
- telemetry_event INSTALL_CRASH "Installer exited unexpectedly (${code}-${lineno})" "E${code}-${lineno}"
-
- trap - EXIT
-
- cleanup
-
- exit 1
-}
-
-trap 'trap_handler 0 ${LINENO}' EXIT
-trap 'trap_handler 1 0' HUP
-trap 'trap_handler 2 0' INT
-trap 'trap_handler 3 0' QUIT
-trap 'trap_handler 13 0' PIPE
-trap 'trap_handler 15 0' TERM
-
-# ======================================================================
-# Utility functions
-
-setup_terminal() {
- TPUT_RESET=""
- TPUT_WHITE=""
- TPUT_BGRED=""
- TPUT_BGGREEN=""
- TPUT_BOLD=""
- TPUT_DIM=""
-
- # Is stderr on the terminal? If not, then fail
- test -t 2 || return 1
-
- if command -v tput > /dev/null 2>&1; then
- if [ $(($(tput colors 2> /dev/null))) -ge 8 ]; then
- # Enable colors
- TPUT_RESET="$(tput sgr 0)"
- TPUT_WHITE="$(tput setaf 7)"
- TPUT_BGRED="$(tput setab 1)"
- TPUT_BGGREEN="$(tput setab 2)"
- TPUT_BOLD="$(tput bold)"
- TPUT_DIM="$(tput dim)"
- fi
- fi
-
- echo "${TPUT_RESET}"
-
- return 0
-}
-
-cleanup() {
- if [ -z "${NO_CLEANUP}" ]; then
- ${ROOTCMD} rm -rf "${tmpdir}"
- fi
-}
-
-fatal() {
- printf >&2 "%s\n\n" "${TPUT_BGRED}${TPUT_WHITE}${TPUT_BOLD} ABORTED ${TPUT_RESET} ${*}"
- telemetry_event "INSTALL_FAILED" "${1}" "${2}"
- cleanup
- trap - EXIT
- exit 1
-}
-
-run_ok() {
- printf >&2 "%s\n\n" "${TPUT_BGGREEN}${TPUT_WHITE}${TPUT_BOLD} OK ${TPUT_RESET}"
-}
-
-run_failed() {
- printf >&2 "%s\n\n" "${TPUT_BGRED}${TPUT_WHITE}${TPUT_BOLD} FAILED ${TPUT_RESET}"
-}
-
-ESCAPED_PRINT_METHOD=
-# shellcheck disable=SC3050
-if printf "%q " test > /dev/null 2>&1; then
- ESCAPED_PRINT_METHOD="printfq"
-fi
-
-escaped_print() {
- if [ "${ESCAPED_PRINT_METHOD}" = "printfq" ]; then
- # shellcheck disable=SC3050
- printf "%q " "${@}"
- else
- printf "%s" "${*}"
- fi
- return 0
-}
-
-progress() {
- echo >&2 " --- ${TPUT_BOLD}${*}${TPUT_RESET} --- "
-}
-
-run_logfile="/dev/null"
-run() {
- user="${USER--}"
- dir="${PWD}"
-
- if [ "$(id -u)" = "0" ]; then
- info="[root ${dir}]# "
- info_console="[${TPUT_DIM}${dir}${TPUT_RESET}]# "
- else
- info="[${user} ${dir}]$ "
- info_console="[${TPUT_DIM}${dir}${TPUT_RESET}]$ "
- fi
-
- {
- printf "%s" "${info}"
- escaped_print "${@}"
- printf " ... "
- } >> "${run_logfile}"
-
- printf >&2 "%s" "${info_console}${TPUT_BOLD}"
- escaped_print >&2 "${@}"
- printf >&2 "%s\n" "${TPUT_RESET}"
-
- "${@}"
-
- ret=$?
- if [ ${ret} -ne 0 ]; then
- run_failed
- printf "%s\n" "FAILED with exit code ${ret}" >> "${run_logfile}"
- else
- run_ok
- printf "OK\n" >> "${run_logfile}"
- fi
-
- return ${ret}
-}
-
-warning() {
- printf >&2 "%s\n\n" "${TPUT_BGRED}${TPUT_WHITE}${TPUT_BOLD} WARNING ${TPUT_RESET} ${*}"
-}
-
-_cannot_use_tmpdir() {
- testfile="$(TMPDIR="${1}" mktemp -q -t netdata-test.XXXXXXXXXX)"
- ret=0
-
- if [ -z "${testfile}" ]; then
- return "${ret}"
- fi
-
- if printf '#!/bin/sh\necho SUCCESS\n' > "${testfile}"; then
- if chmod +x "${testfile}"; then
- if [ "$("${testfile}")" = "SUCCESS" ]; then
- ret=1
- fi
- fi
- fi
-
- rm -f "${testfile}"
- return "${ret}"
-}
-
-create_tmp_directory() {
- if [ -z "${TMPDIR}" ] || _cannot_use_tmpdir "${TMPDIR}"; then
- if _cannot_use_tmpdir /tmp; then
- if _cannot_use_tmpdir "${PWD}"; then
- fatal "Unable to find a usable temporary directory. Please set \$TMPDIR to a path that is both writable and allows execution of files and try again." F0400
- else
- TMPDIR="${PWD}"
- fi
- else
- TMPDIR="/tmp"
- fi
- fi
-
- mktemp -d -t netdata-kickstart-XXXXXXXXXX
-}
-
-download() {
- url="${1}"
- dest="${2}"
- if command -v curl > /dev/null 2>&1; then
- run curl -q -sSL --connect-timeout 10 --retry 3 --output "${dest}" "${url}" || return 1
- elif command -v wget > /dev/null 2>&1; then
- run wget -T 15 -O "${dest}" "${url}" || return 1
- else
- fatal "I need curl or wget to proceed, but neither of them are available on this system." F0003
- fi
-}
-
-get_redirect() {
- url="${1}"
-
- if command -v curl > /dev/null 2>&1; then
- run sh -c "curl ${url} -s -L -I -o /dev/null -w '%{url_effective}' | grep -o '[^/]*$'" || return 1
- elif command -v wget > /dev/null 2>&1; then
- run sh -c "wget --max-redirect=0 ${url} 2>&1 | grep Location | cut -d ' ' -f2 | grep -o '[^/]*$'" || return 1
- else
- fatal "I need curl or wget to proceed, but neither of them are available on this system." F0003
- fi
-}
-
-safe_sha256sum() {
- # Within the context of the installer, we only use -c option that is common between the two commands
- # We will have to reconsider if we start using non-common options
- if command -v sha256sum > /dev/null 2>&1; then
- sha256sum "$@"
- elif command -v shasum > /dev/null 2>&1; then
- shasum -a 256 "$@"
- else
- fatal "I could not find a suitable checksum binary to use" F0004
- fi
-}
-
-get_system_info() {
- case "$(uname -s)" in
- Linux)
- SYSTYPE="Linux"
-
- os_release_file=
- if [ -s "/etc/os-release" ] && [ -r "/etc/os-release" ]; then
- os_release_file="/etc/os-release"
- elif [ -s "/usr/lib/os-release" ] && [ -r "/usr/lib/os-release" ]; then
- os_release_file="/usr/lib/os-release"
- else
- fatal "Cannot find an os-release file ..." F0401
- fi
-
- # shellcheck disable=SC1090
- . "${os_release_file}"
-
- DISTRO="${ID}"
- SYSVERSION="${VERSION_ID}"
- SYSCODENAME="${VERSION_CODENAME}"
- SYSARCH="$(uname -m)"
-
- supported_compat_names="debian ubuntu centos fedora opensuse"
-
- if str_in_list "${DISTRO}" "${supported_compat_names}"; then
- DISTRO_COMPAT_NAME="${DISTRO}"
- else
- case "${DISTRO}" in
- opensuse-leap)
- DISTRO_COMPAT_NAME="opensuse"
- ;;
- rhel)
- DISTRO_COMPAT_NAME="centos"
- ;;
- *)
- DISTRO_COMPAT_NAME="unknown"
- ;;
- esac
- fi
- ;;
- Darwin)
- SYSTYPE="Darwin"
- SYSVERSION="$(sw_vers -buildVersion)"
- SYSARCH="$(uname -m)"
- ;;
- FreeBSD)
- SYSTYPE="FreeBSD"
- SYSVERSION="$(uname -K)"
- SYSARCH="$(uname -m)"
- ;;
- *)
- fatal "Unsupported system type detected. Netdata cannot be installed on this system using this script." F0200
- ;;
- esac
-}
-
-str_in_list() {
- printf "%s\n" "${2}" | tr ' ' "\n" | grep -qE "^${1}\$"
- return $?
-}
-
-confirm_root_support() {
- if [ "$(id -u)" -ne "0" ]; then
- if [ -z "${ROOTCMD}" ] && command -v sudo > /dev/null; then
- ROOTCMD="sudo"
- fi
-
- if [ -z "${ROOTCMD}" ] && command -v doas > /dev/null; then
- ROOTCMD="doas"
- fi
-
- if [ -z "${ROOTCMD}" ] && command -v pkexec > /dev/null; then
- ROOTCMD="pkexec"
- fi
-
- if [ -z "${ROOTCMD}" ]; then
- fatal "We need root privileges to continue, but cannot find a way to gain them. Either re-run this script as root, or set \$ROOTCMD to a command that can be used to gain root privileges" F0201
- fi
- fi
-}
-
-confirm() {
- prompt="${1} [y/n]"
-
- while true; do
- echo "${prompt}"
- read -r yn
-
- case "$yn" in
- [Yy]*) return 0;;
- [Nn]*) return 1;;
- *) echo "Please answer yes or no.";;
- esac
- done
-}
-
-# ======================================================================
-# Existing install handling code
-
-update() {
- updater="${ndprefix}/usr/libexec/netdata/netdata-updater.sh"
-
- if [ -x "${updater}" ]; then
- if run ${ROOTCMD} "${updater}" --not-running-from-cron; then
- progress "Updated existing install at ${ndprefix}"
- return 0
- else
- fatal "Failed to update existing Netdata install at ${ndprefix}" F0100
- fi
- else
- return 1
- fi
-}
-
-handle_existing_install() {
- if pkg_installed netdata; then
- ndprefix="/"
- else
- if [ -n "${INSTALL_PREFIX}" ]; then
- searchpath="${INSTALL_PREFIX}/bin:${INSTALL_PREFIX}/sbin:${INSTALL_PREFIX}/usr/bin:${INSTALL_PREFIX}/usr/sbin:${PATH}"
- searchpath="${INSTALL_PREFIX}/netdata/bin:${INSTALL_PREFIX}/netdata/sbin:${INSTALL_PREFIX}/netdata/usr/bin:${INSTALL_PREFIX}/netdata/usr/sbin:${searchpath}"
- else
- searchpath="${PATH}"
- fi
-
- ndpath="$(PATH="${searchpath}" command -v netdata 2>/dev/null)"
-
- if [ -z "$ndpath" ] && [ -x /opt/netdata/bin/netdata ]; then
- ndpath="/opt/netdata/bin/netdata"
- fi
-
- if [ -n "${ndpath}" ]; then
- ndprefix="$(dirname "$(dirname "${ndpath}")")"
- fi
-
- if echo "${ndprefix}" | grep -Eq '/usr$'; then
- ndprefix="$(dirname "${ndprefix}")"
- fi
- fi
-
- if [ -n "${ndprefix}" ]; then
- typefile="${ndprefix}/etc/netdata/.install-type"
- if [ -r "${typefile}" ]; then
- ${ROOTCMD} sh -c "cat \"${typefile}\" > \"${tmpdir}/install-type\""
- # shellcheck disable=SC1091
- . "${tmpdir}/install-type"
- else
- INSTALL_TYPE="unknown"
- fi
- fi
-
- if [ -z "${ndprefix}" ]; then
- progress "No existing installations of netdata found, assuming this is a fresh install."
- return 0
- fi
-
- case "${INSTALL_TYPE}" in
- kickstart-*|legacy-*|binpkg-*|manual-static|unknown)
- if [ "${INSTALL_TYPE}" = "unknown" ]; then
- warning "Found an existing netdata install at ${ndprefix}, but could not determine the install type."
- else
- progress "Found an existing netdata install at ${ndprefix}, with installation type '${INSTALL_TYPE}'."
- fi
-
- if [ -n "${NETDATA_REINSTALL}" ] || [ -n "${NETDATA_UNSAFE_REINSTALL}" ]; then
- progress "Found an existing netdata install at ${ndprefix}, but user requested reinstall, continuing."
-
- case "${INSTALL_TYPE}" in
- binpkg-*) NETDATA_ONLY_NATIVE=1 ;;
- *-build) NETDATA_ONLY_BUILD=1 ;;
- *-static) NETDATA_ONLY_STATIC=1 ;;
- *)
- if [ -n "${NETDATA_UNSAFE_REINSTALL}" ]; then
- warning "Reinstalling over top of a ${INSTALL_TYPE} installation may be unsafe, but the user has requested we proceed."
- elif [ "${INTERACTIVE}" -eq 0 ]; then
- fatal "User requested reinstall, but we cannot safely reinstall over top of a ${INSTALL_TYPE} installation, exiting." F0104
- else
- if confirm "Reinstalling over top of a ${INSTALL_TYPE} installation may be unsafe, do you want to continue?"; then
- progress "OK, continuing."
- else
- fatal "Cancelling reinstallation at user request." F0105
- fi
- fi
- ;;
- esac
-
- return 0
- fi
-
- ret=0
-
- if [ "${NETDATA_CLAIM_ONLY}" -eq 0 ] && echo "${INSTALL_TYPE}" | grep -vq "binpkg-*"; then
- if ! update; then
- warning "Unable to find usable updater script, not updating existing install at ${ndprefix}."
- fi
- else
- warning "Not updating existing install at ${ndprefix}."
- fi
-
- if [ -n "${NETDATA_CLAIM_TOKEN}" ]; then
- progress "Attempting to claim existing install at ${ndprefix}."
- INSTALL_PREFIX="${ndprefix}"
- claim
- ret=$?
- elif [ "${NETDATA_CLAIM_ONLY}" -eq 1 ]; then
- fatal "User asked to claim, but did not proide a claiming token." F0202
- else
- progress "Not attempting to claim existing install at ${ndprefix} (no claiming token provided)."
- fi
-
- cleanup
- trap - EXIT
- exit $ret
- ;;
- oci)
- fatal "This is an OCI container, use the regular image lifecycle management commands in your container instead of this script for managing it." F0203
- ;;
- *)
- if [ -n "${NETDATA_REINSTALL}" ] || [ -n "${NETDATA_UNSAFE_REINSTALL}" ]; then
- if [ -n "${NETDATA_UNSAFE_REINSTALL}" ]; then
- warning "Reinstalling over top of a ${INSTALL_TYPE} installation may be unsafe, but the user has requested we proceed."
- elif [ "${INTERACTIVE}" -eq 0 ]; then
- fatal "User requested reinstall, but we cannot safely reinstall over top of a ${INSTALL_TYPE} installation, exiting." F0104
- else
- if confirm "Reinstalling over top of a ${INSTALL_TYPE} installation may be unsafe, do you want to continue?"; then
- progress "OK, continuing."
- else
- fatal "Cancelling reinstallation at user request." F0105
- fi
- fi
- else
- fatal "Found an existing netdata install at ${ndprefix}, but the install type is '${INSTALL_TYPE}', which is not supported, refusing to proceed." F0103
- fi
- ;;
- esac
-}
-
-soft_disable_cloud() {
- cloud_prefix="${INSTALL_PREFIX}/var/lib/netdata/cloud.d"
-
- run ${ROOTCMD} mkdir -p "${cloud_prefix}"
-
- cat > "${tmpdir}/cloud.conf" << EOF
-[global]
- enabled = no
-EOF
-
- run ${ROOTCMD} cp "${tmpdir}/cloud.conf" "${cloud_prefix}/cloud.conf"
-
- if [ -z "${NETDATA_NO_START}" ]; then
- case "${SYSTYPE}" in
- Darwin) run ${ROOTCMD} launchctl kickstart -k com.github.netdata ;;
- FreeBSD) run ${ROOTCMD} service netdata restart ;;
- Linux)
- initpath="$(${ROOTCMD} readlink /proc/1/exe)"
-
- if command -v service > /dev/null 2>&1; then
- run ${ROOTCMD} service netdata restart
- elif command -v rc-service > /dev/null 2>&1; then
- run ${ROOTCMD} rc-service netdata restart
- elif [ "$(basename "${initpath}" 2> /dev/null)" = "systemd" ]; then
- run ${ROOTCMD} systemctl restart netdata
- elif [ -f /etc/init.d/netdata ]; then
- run ${ROOTCMD} /etc/init.d/netdata restart
- fi
- ;;
- esac
- fi
-}
-
-confirm_install_prefix() {
- if [ -n "${INSTALL_PREFIX}" ] && [ "${NETDATA_ONLY_BUILD}" -ne 1 ]; then
- fatal "The \`--install\` option is only supported together with the \`--only-build\` option." F0204
- fi
-
- if [ -n "${INSTALL_PREFIX}" ]; then
- NETDATA_INSTALLER_OPTIONS="${NETDATA_INSTALLER_OPTIONS} --install ${INSTALL_PREFIX}"
- else
- case "${SYSTYPE}" in
- Darwin)
- INSTALL_PREFIX="/usr/local/netdata"
- NETDATA_INSTALLER_OPTIONS="${NETDATA_INSTALLER_OPTIONS} --install-no-prefix ${INSTALL_PREFIX}"
- ;;
- FreeBSD)
- INSTALL_PREFIX="/usr/local"
- NETDATA_INSTALLER_OPTIONS="${NETDATA_INSTALLER_OPTIONS} --install-no-prefix ${INSTALL_PREFIX}"
- ;;
- esac
- fi
-}
-
-# ======================================================================
-# Claiming support code
-
-check_claim_opts() {
-# shellcheck disable=SC2235,SC2030
- if [ -z "${NETDATA_CLAIM_TOKEN}" ] && [ -n "${NETDATA_CLAIM_ROOMS}" ]; then
- fatal "Invalid claiming options, claim rooms may only be specified when a token and URL are specified." F0204
- elif [ -z "${NETDATA_CLAIM_TOKEN}" ] && [ -n "${NETDATA_CLAIM_EXTRA}" ]; then
- fatal "Invalid claiming options, a claiming token must be specified." F0204
- elif [ "${NETDATA_DISABLE_CLOUD}" -eq 1 ] && [ -n "${NETDATA_CLAIM_TOKEN}" ]; then
- fatal "Cloud explicitly disabled, but automatic claiming requested. Either enable Netdata Cloud, or remove the --claim-* options." F0204
- fi
-}
-
-claim() {
- progress "Attempting to claim agent to ${NETDATA_CLAIM_URL}"
- if [ -z "${INSTALL_PREFIX}" ]; then
- NETDATA_CLAIM_PATH=/usr/sbin/netdata-claim.sh
- elif [ "${INSTALL_PREFIX}" = "/opt/netdata" ]; then
- NETDATA_CLAIM_PATH="/opt/netdata/bin/netdata-claim.sh"
- else
- NETDATA_CLAIM_PATH="${INSTALL_PREFIX}/netdata/usr/sbin/netdata-claim.sh"
- fi
-
- if ! pgrep netdata > /dev/null; then
- NETDATA_CLAIM_EXTRA="${NETDATA_CLAIM_EXTRA} -daemon-not-running"
- fi
-
- # shellcheck disable=SC2086
- if ${ROOTCMD} "${NETDATA_CLAIM_PATH}" -token="${NETDATA_CLAIM_TOKEN}" -rooms="${NETDATA_CLAIM_ROOMS}" -url="${NETDATA_CLAIM_URL}" ${NETDATA_CLAIM_EXTRA}; then
- progress "Successfully claimed node"
- else
- warning "Unable to claim node, you must do so manually."
- if [ -z "${NETDATA_NEW_INSTALL}" ]; then
- cleanup
- trap - EXIT
- exit 1
- fi
- fi
-}
-
-# ======================================================================
-# Native package install code.
-
-# Check for an already installed package with a given name.
-pkg_installed() {
- case "${DISTRO_COMPAT_NAME}" in
- debian|ubuntu)
- dpkg -l "${1}" > /dev/null 2>&1
- return $?
- ;;
- centos|fedora|opensuse)
- rpm -q "${1}" > /dev/null 2>&1
- return $?
- ;;
- *)
- return 1
- ;;
- esac
-}
-
-# Check for the existence of a usable netdata package in the repo.
-netdata_avail_check() {
- case "${DISTRO_COMPAT_NAME}" in
- debian|ubuntu)
- env DEBIAN_FRONTEND=noninteractive apt-cache policy netdata | grep -q packagecloud.io/netdata/netdata;
- return $?
- ;;
- centos|fedora)
- # shellcheck disable=SC2086
- ${pm_cmd} search -v netdata | grep -qE 'Repo *: netdata(-edge)?$'
- return $?
- ;;
- opensuse)
- zypper packages -r "$(zypper repos | grep -E 'netdata |netdata-edge ' | cut -f 1 -d '|' | tr -d ' ')" | grep -E 'netdata '
- return $?
- ;;
- *)
- return 1
- ;;
- esac
-}
-
-# Check for any distro-specific dependencies we know we need.
-check_special_native_deps() {
- if [ "${DISTRO_COMPAT_NAME}" = "centos" ] && [ "${SYSVERSION}" = "7" ]; then
- progress "Checking for libuv availability."
- # shellcheck disable=SC2086
- if ${pm_cmd} search ${interactive_opts} -v libuv | grep -q "No matches found"; then
- progress "libv not found, checking for EPEL availability."
- # shellcheck disable=SC2086
- if ${pm_cmd} search ${interactive_opts} -v epel-release | grep -q "No matches found"; then
- warning "Unable to find a suitable source for libuv, cannot install on this system."
- return 1
- else
- progress "EPEL is available, attempting to install so that required dependencies are available."
-
- # shellcheck disable=SC2086
- if ! run ${ROOTCMD} env ${env} ${pm_cmd} install ${pkg_install_opts} epel-release; then
- warning "Failed to install EPEL."
- return 1
- fi
- fi
- else
- return 0
- fi
- fi
-}
-
-try_package_install() {
- if [ -z "${DISTRO}" ]; then
- warning "Unable to determine Linux distribution for native packages."
- return 1
- fi
-
- progress "Attempting to install using native packages..."
-
- if [ "${RELEASE_CHANNEL}" = "nightly" ]; then
- release="-edge"
- else
- release=""
- fi
-
- if [ "${INTERACTIVE}" = "0" ]; then
- interactive_opts="-y"
- env="DEBIAN_FRONTEND=noninteractive"
- else
- interactive_opts=""
- env=""
- fi
-
- case "${DISTRO_COMPAT_NAME}" in
- debian)
- needs_early_refresh=1
- pm_cmd="apt-get"
- repo_subcmd="update"
- repo_prefix="debian/${SYSCODENAME}"
- pkg_type="deb"
- pkg_suffix="_all"
- pkg_vsep="_"
- pkg_install_opts="${interactive_opts}"
- repo_update_opts="${interactive_opts}"
- uninstall_subcmd="uninstall"
- INSTALL_TYPE="binpkg-deb"
- ;;
- ubuntu)
- needs_early_refresh=1
- pm_cmd="apt-get"
- repo_subcmd="update"
- repo_prefix="ubuntu/${SYSCODENAME}"
- pkg_type="deb"
- pkg_suffix="_all"
- pkg_vsep="_"
- pkg_install_opts="${interactive_opts}"
- repo_update_opts="${interactive_opts}"
- uninstall_subcmd="uninstall"
- INSTALL_TYPE="binpkg-deb"
- ;;
- centos)
- if command -v dnf > /dev/null; then
- pm_cmd="dnf"
- repo_subcmd="makecache"
- else
- pm_cmd="yum"
- fi
- repo_prefix="el/${SYSVERSION}"
- pkg_type="rpm"
- pkg_suffix=".noarch"
- pkg_vsep="-"
- pkg_install_opts="${interactive_opts}"
- repo_update_opts="${interactive_opts}"
- uninstall_subcmd="remove"
- INSTALL_TYPE="binpkg-rpm"
- ;;
- fedora)
- if command -v dnf > /dev/null; then
- pm_cmd="dnf"
- repo_subcmd="makecache"
- else
- pm_cmd="yum"
- fi
- repo_prefix="fedora/${SYSVERSION}"
- pkg_type="rpm"
- pkg_suffix=".noarch"
- pkg_vsep="-"
- pkg_install_opts="${interactive_opts}"
- repo_update_opts="${interactive_opts}"
- uninstall_subcmd="remove"
- INSTALL_TYPE="binpkg-rpm"
- ;;
- opensuse)
- pm_cmd="zypper"
- repo_subcmd="--gpg-auto-import-keys refresh"
- repo_prefix="opensuse/${SYSVERSION}"
- pkg_type="rpm"
- pkg_suffix=".noarch"
- pkg_vsep="-"
- pkg_install_opts="${interactive_opts} --allow-unsigned-rpm"
- repo_update_opts=""
- uninstall_subcmd="remove"
- INSTALL_TYPE="binpkg-rpm"
- ;;
- *)
- warning "We do not provide native packages for ${DISTRO}."
- return 2
- ;;
- esac
-
- repoconfig_name="netdata-repo${release}"
- repoconfig_file="${repoconfig_name}${pkg_vsep}${REPOCONFIG_VERSION}${pkg_suffix}.${pkg_type}"
- repoconfig_url="${REPOCONFIG_URL_PREFIX}/${repo_prefix}/${repoconfig_file}/download.${pkg_type}"
-
- if ! pkg_installed "${repoconfig_name}"; then
- progress "Downloading repository configuration package."
- if ! download "${repoconfig_url}" "${tmpdir}/${repoconfig_file}"; then
- warning "Failed to download repository configuration package."
- return 2
- fi
-
- if [ -n "${needs_early_refresh}" ]; then
- progress "Updating repository metadata."
- # shellcheck disable=SC2086
- if ! run ${ROOTCMD} env ${env} ${pm_cmd} ${repo_subcmd} ${repo_update_opts}; then
- warning "Failed to refresh repository metadata."
- return 2
- fi
- fi
-
- progress "Installing repository configuration package."
- # shellcheck disable=SC2086
- if ! run ${ROOTCMD} env ${env} ${pm_cmd} install ${pkg_install_opts} "${tmpdir}/${repoconfig_file}"; then
- warning "Failed to install repository configuration package."
- return 2
- fi
-
- if [ -n "${repo_subcmd}" ]; then
- progress "Updating repository metadata."
- # shellcheck disable=SC2086
- if ! run ${ROOTCMD} env ${env} ${pm_cmd} ${repo_subcmd} ${repo_update_opts}; then
- fatal "Failed to update repository metadata." F0205
- fi
- fi
- else
- progress "Repository configuration is already present, attempting to install netdata."
- fi
-
- if ! check_special_native_deps; then
- warning "Could not find secondary dependencies ${DISTRO} on ${SYSARCH}."
- if [ -z "${NO_CLEANUP}" ]; then
- progress "Attempting to uninstall repository configuration package."
- # shellcheck disable=SC2086
- run ${ROOTCMD} env ${env} ${pm_cmd} ${uninstall_subcmd} ${pkg_install_opts} "${repoconfig_name}"
- fi
- return 2
- fi
-
- progress "Checking for usable Netdata package."
- if ! netdata_avail_check "${DISTRO_COMPAT_NAME}"; then
- warning "Could not find a usable native package for ${DISTRO} on ${SYSARCH}."
- if [ -z "${NO_CLEANUP}" ]; then
- progress "Attempting to uninstall repository configuration package."
- # shellcheck disable=SC2086
- run ${ROOTCMD} env ${env} ${pm_cmd} ${uninstall_subcmd} ${pkg_install_opts} "${repoconfig_name}"
- fi
- return 2
- fi
-
- if [ "${NETDATA_DISABLE_TELEMETRY}" -eq 1 ]; then
- run ${ROOTCMD} mkdir -p "/etc/netdata"
- run ${ROOTCMD} touch "/etc/netdata/.opt-out-from-anonymous-statistics"
- fi
-
- progress "Installing Netdata package."
- # shellcheck disable=SC2086
- if ! run ${ROOTCMD} env ${env} ${pm_cmd} install ${pkg_install_opts} netdata; then
- warning "Failed to install Netdata package."
- if [ -z "${NO_CLEANUP}" ]; then
- progress "Attempting to uninstall repository configuration package."
- # shellcheck disable=SC2086
- run ${ROOTCMD} env ${env} ${pm_cmd} ${uninstall_subcmd} ${pkg_install_opts} "${repoconfig_name}"
- fi
- return 2
- fi
-}
-
-# ======================================================================
-# Static build install code
-
-set_static_archive_urls() {
- if [ "${RELEASE_CHANNEL}" = "stable" ]; then
- latest="$(get_redirect "https://github.com/netdata/netdata/releases/latest")"
- export NETDATA_STATIC_ARCHIVE_URL="https://github.com/netdata/netdata/releases/download/${latest}/netdata-${SYSARCH}-${latest}.gz.run"
- export NETDATA_STATIC_ARCHIVE_CHECKSUM_URL="https://github.com/netdata/netdata/releases/download/${latest}/sha256sums.txt"
- else
- export NETDATA_STATIC_ARCHIVE_URL="${NETDATA_TARBALL_BASEURL}/netdata-latest.gz.run"
- export NETDATA_STATIC_ARCHIVE_CHECKSUM_URL="${NETDATA_TARBALL_BASEURL}/sha256sums.txt"
- fi
-}
-
-try_static_install() {
- set_static_archive_urls "${RELEASE_CHANNEL}"
- progress "Downloading static netdata binary: ${NETDATA_STATIC_ARCHIVE_URL}"
-
- if ! download "${NETDATA_STATIC_ARCHIVE_URL}" "${tmpdir}/netdata-${SYSARCH}-latest.gz.run"; then
- warning "Unable to download static build archive for ${SYSARCH}."
- return 2
- fi
-
- if ! download "${NETDATA_STATIC_ARCHIVE_CHECKSUM_URL}" "${tmpdir}/sha256sum.txt"; then
- fatal "Unable to fetch checksums to verify static build archive." F0206
- fi
-
- if ! grep "netdata-${SYSARCH}-latest.gz.run" "${tmpdir}/sha256sum.txt" | safe_sha256sum -c - > /dev/null 2>&1; then
- fatal "Static binary checksum validation failed. Usually this is a result of an older copy of the file being cached somewhere upstream and can be resolved by retrying in an hour." F0207
- fi
-
- if [ "${INTERACTIVE}" -eq 0 ]; then
- opts="${opts} --accept"
- fi
-
- progress "Installing netdata"
- # shellcheck disable=SC2086
- if ! run ${ROOTCMD} sh "${tmpdir}/netdata-${SYSARCH}-latest.gz.run" ${opts} -- ${NETDATA_AUTO_UPDATES:+--auto-update} ${NETDATA_INSTALLER_OPTIONS}; then
- warning "Failed to install static build of Netdata on ${SYSARCH}."
- run rm -rf /opt/netdata
- return 2
- fi
-
- install_type_file="/opt/netdata/etc/netdata/.install-type"
- if [ -f "${install_type_file}" ]; then
- ${ROOTCMD} sh -c "cat \"${install_type_file}\" > \"${tmpdir}/install-type\""
- ${ROOTCMD} chown "$(id -u)":"$(id -g)" "${tmpdir}/install-type"
- # shellcheck disable=SC1091
- . "${tmpdir}/install-type"
- cat > "${tmpdir}/install-type" <<- EOF
- INSTALL_TYPE='kickstart-static'
- PREBUILT_ARCH='${PREBUILT_ARCH}'
- EOF
- ${ROOTCMD} chown netdata:netdata "${tmpdir}/install-type"
- ${ROOTCMD} cp "${tmpdir}/install-type" "${install_type_file}"
- fi
-}
-
-# ======================================================================
-# Local build install code
-
-set_source_archive_urls() {
- if [ "$1" = "stable" ]; then
- latest="$(get_redirect "https://github.com/netdata/netdata/releases/latest")"
- export NETDATA_SOURCE_ARCHIVE_URL="https://github.com/netdata/netdata/releases/download/${latest}/netdata-${latest}.tar.gz"
- export NETDATA_SOURCE_ARCHIVE_CHECKSUM_URL="https://github.com/netdata/netdata/releases/download/${latest}/sha256sums.txt"
- else
- export NETDATA_SOURCE_ARCHIVE_URL="${NETDATA_TARBALL_BASEURL}/netdata-latest.tar.gz"
- export NETDATA_SOURCE_ARCHIVE_CHECKSUM_URL="${NETDATA_TARBALL_BASEURL}/sha256sums.txt"
- fi
-}
-
-install_local_build_dependencies() {
- bash="$(command -v bash 2> /dev/null)"
-
- if [ -z "${bash}" ] || [ ! -x "${bash}" ]; then
- warning "Unable to find a usable version of \`bash\` (required for local build)."
- return 1
- fi
-
- progress "Fetching 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..."
-
- if [ "${INTERACTIVE}" -eq 0 ]; then
- opts="--dont-wait --non-interactive"
- fi
-
- if [ "${SYSTYPE}" = "Darwin" ]; then
- sudo=""
- else
- sudo="${ROOTCMD}"
- fi
-
- # shellcheck disable=SC2086
- if ! run ${sudo} "${bash}" "${tmpdir}/install-required-packages.sh" ${opts} netdata; then
- warning "It failed to install all the required packages, but installation might still be possible."
- fi
- fi
-}
-
-build_and_install() {
- progress "Building netdata"
-
- echo "INSTALL_TYPE='kickstart-build'" > system/.install-type
-
- opts="${NETDATA_INSTALLER_OPTIONS}"
-
- if [ "${INTERACTIVE}" -eq 0 ]; then
- opts="${opts} --dont-wait"
- fi
-
- if [ "${NETDATA_AUTO_UPDATES}" -eq 1 ]; then
- opts="${opts} --auto-update"
- fi
-
- if [ "${RELEASE_CHANNEL}" = "stable" ]; then
- opts="${opts} --stable-channel"
- fi
-
- if [ "${NETDATA_REQUIRE_CLOUD}" -eq 1 ]; then
- opts="${opts} --require-cloud"
- elif [ "${NETDATA_DISABLE_CLOUD}" -eq 1 ]; then
- opts="${opts} --disable-cloud"
- fi
-
- # shellcheck disable=SC2086
- run ${ROOTCMD} ./netdata-installer.sh ${opts}
-
- case $? in
- 1)
- fatal "netdata-installer.sh exited with error" F0007
- ;;
- 2)
- fatal "Insufficient RAM to install netdata" F0008
- ;;
- esac
-}
-
-try_build_install() {
- if ! install_local_build_dependencies; then
- return 1
- fi
-
- set_source_archive_urls "${RELEASE_CHANNEL}"
-
- download "${NETDATA_SOURCE_ARCHIVE_CHECKSUM_URL}" "${tmpdir}/sha256sum.txt"
- download "${NETDATA_SOURCE_ARCHIVE_URL}" "${tmpdir}/netdata-latest.tar.gz"
-
- if ! grep netdata-latest.tar.gz "${tmpdir}/sha256sum.txt" | safe_sha256sum -c - > /dev/null 2>&1; then
- fatal "Tarball checksum validation failed. Usually this is a result of an older copy of the file being cached somewhere upstream and can be resolved by retrying in an hour." F0005
- fi
-
- run tar -xf "${tmpdir}/netdata-latest.tar.gz" -C "${tmpdir}"
- rm -rf "${tmpdir}/netdata-latest.tar.gz" > /dev/null 2>&1
- cd "$(find "${tmpdir}" -mindepth 1 -maxdepth 1 -type d -name netdata-)" || fatal "Cannot cd to netdata source tree" F0006
-
- if [ -x netdata-installer.sh ]; then
- build_and_install || return 1
- else
- # This case is needed because some platforms produce an extra directory on the source tarball extraction.
- if [ "$(find . -mindepth 1 -maxdepth 1 -type d | wc -l)" -eq 1 ] && [ -x "$(find . -mindepth 1 -maxdepth 1 -type d)/netdata-installer.sh" ]; then
- cd "$(find . -mindepth 1 -maxdepth 1 -type d)" && build_and_install || return 1
- else
- fatal "Cannot install netdata from source (the source directory does not include netdata-installer.sh). Leaving all files in ${tmpdir}" F0009
- fi
- fi
-}
-
-# ======================================================================
-# Per system-type install logic
-
-install_on_linux() {
- if [ "${NETDATA_ONLY_STATIC}" -ne 1 ] && [ "${NETDATA_ONLY_BUILD}" -ne 1 ]; then
- SELECTED_INSTALL_METHOD="native"
- try_package_install
-
- case "$?" in
- 0)
- NETDATA_INSTALL_SUCCESSFUL=1
- ;;
- 1)
- fatal "Unable to install on this system." F0300
- ;;
- 2)
- if [ "${NETDATA_ONLY_NATIVE}" -eq 1 ]; then
- fatal "Could not install native binary packages." F0301
- else
- warning "Could not install native binary packages, falling back to alternative installation method."
- fi
- ;;
- esac
- fi
-
- if [ "${NETDATA_ONLY_NATIVE}" -ne 1 ] && [ "${NETDATA_ONLY_BUILD}" -ne 1 ] && [ -z "${NETDATA_INSTALL_SUCCESSFUL}" ]; then
- SELECTED_INSTALL_METHOD="static"
- INSTALL_TYPE="kickstart-static"
- try_static_install
-
- case "$?" in
- 0)
- NETDATA_INSTALL_SUCCESSFUL=1
- INSTALL_PREFIX="/opt/netdata"
- ;;
- 1)
- fatal "Unable to install on this system." F0302
- ;;
- 2)
- if [ "${NETDATA_ONLY_STATIC}" -eq 1 ]; then
- fatal "Could not install static build." F0303
- else
- warning "Could not install static build, falling back to alternative installation method."
- fi
- ;;
- esac
- fi
-
- if [ "${NETDATA_ONLY_NATIVE}" -ne 1 ] && [ "${NETDATA_ONLY_STATIC}" -ne 1 ] && [ -z "${NETDATA_INSTALL_SUCCESSFUL}" ]; then
- SELECTED_INSTALL_METHOD="build"
- INSTALL_TYPE="kickstart-build"
- try_build_install
-
- case "$?" in
- 0)
- NETDATA_INSTALL_SUCCESSFUL=1
- ;;
- *)
- fatal "Unable to install on this system." F0304
- ;;
- esac
- fi
-}
-
-install_on_macos() {
- if [ "${NETDATA_ONLY_NATIVE}" -eq 1 ]; then
- fatal "User requested native package, but native packages are not available for macOS. Try installing without \`--only-native\` option." F0305
- elif [ "${NETDATA_ONLY_STATIC}" -eq 1 ]; then
- fatal "User requested static build, but static builds are not available for macOS. Try installing without \`--only-static\` option." F0306
- else
- SELECTED_INSTALL_METHOD="build"
- INSTALL_TYPE="kickstart-build"
- try_build_install
-
- case "$?" in
- 0)
- NETDATA_INSTALL_SUCCESSFUL=1
- ;;
- *)
- fatal "Unable to install on this system." F0307
- ;;
- esac
- fi
-}
-
-install_on_freebsd() {
- if [ "${NETDATA_ONLY_NATIVE}" -eq 1 ]; then
- fatal "User requested native package, but native packages are not available for FreeBSD. Try installing without \`--only-native\` option." F0308
- elif [ "${NETDATA_ONLY_STATIC}" -eq 1 ]; then
- fatal "User requested static build, but static builds are not available for FreeBSD. Try installing without \`--only-static\` option." F0309
- else
- SELECTED_INSTALL_METHOD="build"
- INSTALL_TYPE="kickstart-build"
- try_build_install
-
- case "$?" in
- 0)
- NETDATA_INSTALL_SUCCESSFUL=1
- ;;
- *)
- fatal "Unable to install on this system." F030A
- ;;
- esac
- fi
-}
-
-# ======================================================================
-# Main program
-
-setup_terminal || echo > /dev/null
-
-while [ -n "${1}" ]; do
- case "${1}" in
- "--help")
- usage
- cleanup
- trap - EXIT
- exit 0
- ;;
- "--no-cleanup") NO_CLEANUP=1 ;;
- "--dont-wait"|"--non-interactive") INTERACTIVE=0 ;;
- "--interactive") INTERACTIVE=1 ;;
- "--stable-channel") RELEASE_CHANNEL="stable" ;;
- "--no-updates") NETDATA_AUTO_UPDATES=0 ;;
- "--auto-update") NETDATA_AUTO_UPDATES="1" ;;
- "--reinstall") NETDATA_REINSTALL=1 ;;
- "--reinstall-even-if-unsafe") NETDATA_UNSAFE_REINSTALL=1 ;;
- "--claim-only") NETDATA_CLAIM_ONLY=1 ;;
- "--disable-cloud")
- NETDATA_DISABLE_CLOUD=1
- NETDATA_REQUIRE_CLOUD=0
- ;;
- "--require-cloud")
- NETDATA_DISABLE_CLOUD=0
- NETDATA_REQUIRE_CLOUD=1
- ;;
- "--dont-start-it")
- NETDATA_NO_START=1
- NETDATA_INSTALLER_OPTIONS="${NETDATA_INSTALLER_OPTIONS} --dont-start-it"
- ;;
- "--disable-telemetry")
- NETDATA_DISABLE_TELEMETRY="1"
- NETDATA_INSTALLER_OPTIONS="${NETDATA_INSTALLER_OPTIONS} --disable-telemetry"
- ;;
- "--install")
- INSTALL_PREFIX="${2}"
- shift 1
- ;;
- "--native-only")
- NETDATA_ONLY_NATIVE=1
- NETDATA_ONLY_STATIC=0
- NETDATA_ONLY_BUILD=0
- SELECTED_INSTALL_METHOD="native"
- ;;
- "--static-only")
- NETDATA_ONLY_STATIC=1
- NETDATA_ONLY_NATIVE=0
- NETDATA_ONLY_BUILD=0
- SELECTED_INSTALL_METHOD="static"
- ;;
- "--build-only")
- NETDATA_ONLY_BUILD=1
- NETDATA_ONLY_NATIVE=0
- NETDATA_ONLY_STATIC=0
- SELECTED_INSTALL_METHOD="build"
- ;;
- "--claim-token")
- NETDATA_CLAIM_TOKEN="${2}"
- shift 1
- ;;
- "--claim-rooms")
- NETDATA_CLAIM_ROOMS="${2}"
- shift 1
- ;;
- "--claim-url")
- NETDATA_CLAIM_URL="${2}"
- shift 1
- ;;
- "--claim-*")
- optname="$(echo "${1}" | cut -d '-' -f 4-)"
- case "${optname}" in
- id|proxy|user|hostname)
- NETDATA_CLAIM_EXTRA="${NETDATA_CLAIM_EXTRA} -${optname} ${2}"
- shift 1
- ;;
- verbose|insecure|noproxy|noreload|daemon-not-running)
- NETDATA_CLAIM_EXTRA="${NETDATA_CLAIM_EXTRA} -${optname}"
- ;;
- *)
- warning "Ignoring unrecognized claiming option ${optname}"
- ;;
- esac
- ;;
- *)
- warning "Passing unrecognized option '${1}' to installer script. If this is intended, please add it to \$NETDATA_INSTALLER_OPTIONS instead."
- NETDATA_INSTALLER_OPTIONS="${NETDATA_INSTALLER_OPTIONS} ${1}"
- ;;
- esac
- shift 1
-done
-
-check_claim_opts
-confirm_root_support
-get_system_info
-confirm_install_prefix
-
-tmpdir="$(create_tmp_directory)"
-progress "Using ${tmpdir} as a temporary directory."
-cd "${tmpdir}" || exit 1
-
-handle_existing_install
-
-case "${SYSTYPE}" in
- Linux) install_on_linux ;;
- Darwin) install_on_macos ;;
- FreeBSD) install_on_freebsd ;;
-esac
-
-if [ -n "${NETDATA_CLAIM_TOKEN}" ]; then
- claim
-elif [ "${NETDATA_DISABLE_CLOUD}" -eq 1 ]; then
- soft_disable_cloud
-fi
-
-telemetry_event INSTALL_SUCCESS "" ""
-cleanup
-trap - EXIT
+kickstart.sh \ No newline at end of file