From cc0de9f292c4bc1e91a8ec27114624c3b4e8becf Mon Sep 17 00:00:00 2001 From: "Austin S. Hemmelgarn" Date: Tue, 14 Jan 2020 07:45:57 -0500 Subject: Make auto-updates work on kickstart-static64 installs. (#7704) * Store only the options for reinstall, not the full command. This simplifies handling of updates with the static installer. * Properly utilize the updater for static installs. * Disable auto-updater when using local files. If using local files, we can probably assume a system without a network connection, so don't enable the auto-updater. * Document support for auto-updates from kickstart-static64 * Fix infinite loop in auto-update option. * Update kickstart-static64 checksum in docs. * Remove unnecessary `sed` argument. Co-Authored-By: Konstantinos Natsakis <5933427+knatsakis@users.noreply.github.com> Co-authored-by: Konstantinos Natsakis <5933427+knatsakis@users.noreply.github.com> --- packaging/installer/README.md | 3 ++- packaging/installer/kickstart-static64.sh | 4 ++++ packaging/installer/netdata-updater.sh | 8 +++++--- packaging/makeself/install-or-update.sh | 31 ++++++++++++++++++++++++++----- 4 files changed, 37 insertions(+), 9 deletions(-) (limited to 'packaging') diff --git a/packaging/installer/README.md b/packaging/installer/README.md index 5a7881d065..1fcbcc6d4e 100644 --- a/packaging/installer/README.md +++ b/packaging/installer/README.md @@ -116,7 +116,7 @@ This script installs Netdata at `/opt/netdata`. Verify the integrity of the script with this: ```bash -[ "23e0f38dfb9d517be16393c3ed1f88bd" = "$(curl -Ss https://my-netdata.io/kickstart-static64.sh | md5sum | cut -d ' ' -f 1)" ] && echo "OK, VALID" || echo "FAILED, INVALID" +[ "9e0901736a8ed5ebcc84bc1c2c7b5db9" = "$(curl -Ss https://my-netdata.io/kickstart-static64.sh | md5sum | cut -d ' ' -f 1)" ] && echo "OK, VALID" || echo "FAILED, INVALID" ``` *It should print `OK, VALID` if the script is the one we ship.* @@ -153,6 +153,7 @@ sh /tmp/kickstart-static64.sh - The static binary files are kept in repo [binary-packages](https://github.com/netdata/binary-packages). You can download any of the `.run` files, and run it. These files are self-extracting shell scripts built with [makeself](https://github.com/megastep/makeself). - The target system does **not** need to have bash installed. - The same files can be used for updates too. +- If the `--local-files` option was not specified, installs `netdata-updater.sh` to `cron.daily`, so your Netdata installation will be updated daily (you will get a message from cron only if the update fails). - For QA purposes, this installation method lets us know if it succeed or failed. diff --git a/packaging/installer/kickstart-static64.sh b/packaging/installer/kickstart-static64.sh index 1111e0e24f..e82cb69af8 100755 --- a/packaging/installer/kickstart-static64.sh +++ b/packaging/installer/kickstart-static64.sh @@ -197,6 +197,9 @@ while [ -n "${1}" ]; do elif [ "${1}" = "--no-updates" ]; then NETDATA_UPDATES="" shift 1 + elif [ "${1}" = "--auto-update" ]; then + true # This is the default behaviour, so ignore it. + shift 1 elif [ "${1}" = "--stable-channel" ]; then RELEASE_CHANNEL="stable" NETDATA_INSTALLER_OPTIONS="${NETDATA_INSTALLER_OPTIONS:+${NETDATA_INSTALLER_OPTIONS} }${1}" @@ -205,6 +208,7 @@ while [ -n "${1}" ]; do NETDATA_INSTALLER_OPTIONS="${NETDATA_INSTALLER_OPTIONS:+${NETDATA_INSTALLER_OPTIONS} }${1}" shift 1 elif [ "${1}" = "--local-files" ]; then + NETDATA_UPDATES="" # Disable autoupdates if using pre-downloaded files. shift 1 if [ -z "${1}" ]; then fatal "Option --local-files requires extra information. The desired tarball full filename is needed" diff --git a/packaging/installer/netdata-updater.sh b/packaging/installer/netdata-updater.sh index b24cee6c9f..023f0de7cf 100755 --- a/packaging/installer/netdata-updater.sh +++ b/packaging/installer/netdata-updater.sh @@ -7,8 +7,9 @@ # - PATH # - CFLAGS # - LDFLAGS +# - IS_NETDATA_STATIC_BINARY # - NETDATA_CONFIGURE_OPTIONS -# - REINSTALL_COMMAND +# - REINSTALL_OPTIONS # - NETDATA_TARBALL_URL # - NETDATA_TARBALL_CHECKSUM_URL # - NETDATA_TARBALL_CHECKSUM @@ -141,8 +142,9 @@ update() { do_not_start="--dont-start-it" fi + echo "${REINSTALL_OPTIONS}" info "Re-installing netdata..." - eval "${REINSTALL_COMMAND} --dont-wait ${do_not_start}" >&3 2>&3 || fatal "FAILED TO COMPILE/INSTALL NETDATA" + eval "./netdata-installer.sh ${REINSTALL_OPTIONS} --dont-wait ${do_not_start}" >&3 2>&3 || fatal "FAILED TO COMPILE/INSTALL NETDATA" # We no longer store checksum info here. but leave this so that we clean up all environment files upon next update. sed -i '/NETDATA_TARBALL/d' "${ENVIRONMENT_FILE}" @@ -201,7 +203,7 @@ if [ "${IS_NETDATA_STATIC_BINARY}" == "yes" ]; then fi # Do not pass any options other than the accept, for now - sh "${TMPDIR}/netdata-latest.gz.run" --accept + sh "${TMPDIR}/netdata-latest.gz.run" --accept ${REINSTALL_OPTIONS} #shellcheck disable=SC2181 if [ $? -eq 0 ]; then diff --git a/packaging/makeself/install-or-update.sh b/packaging/makeself/install-or-update.sh index c287fd38c1..330cfc5798 100755 --- a/packaging/makeself/install-or-update.sh +++ b/packaging/makeself/install-or-update.sh @@ -25,15 +25,31 @@ fi STARTIT=1 AUTOUPDATE=0 +REINSTALL_OPTIONS="" RELEASE_CHANNEL="nightly" # check .travis/create_artifacts.sh before modifying while [ "${1}" ]; do case "${1}" in - "--dont-start-it") STARTIT=0;; - "--auto-update"|"-u") AUTOUPDATE=1;; - "--stable-channel") RELEASE_CHANNEL="stable";; - "--nightly-channel") RELEASE_CHANNEL="nightly";; - "--disable-telemetry") DISABLE_TELEMETRY=1;; + "--dont-start-it") + STARTIT=0 + REINSTALL_OPTIONS="${REINSTALL_OPTIONS} ${1}" + ;; + "--auto-update"|"-u") + AUTOUPDATE=1 + REINSTALL_OPTIONS="${REINSTALL_OPTIONS} ${1}" + ;; + "--stable-channel") + RELEASE_CHANNEL="stable" + REINSTALL_OPTIONS="${REINSTALL_OPTIONS} ${1}" + ;; + "--nightly-channel") + RELEASE_CHANNEL="nightly" + REINSTALL_OPTIONS="${REINSTALL_OPTIONS} ${1}" + ;; + "--disable-telemetry") + DISABLE_TELEMETRY=1 + REINSTALL_OPTIONS="${REINSTALL_OPTIONS} ${1}" + ;; *) echo >&2 "Unknown option '${1}'. Ignoring it.";; esac @@ -241,6 +257,11 @@ then run chmod 4750 bin/fping fi +# ----------------------------------------------------------------------------- + +echo "Save install options" +grep -qv 'IS_NETDATA_STATIC_BINARY="yes"' "${NETDATA_PREFIX}/etc/netdata/.environment" || echo IS_NETDATA_STATIC_BINARY=\"yes\" >> "${NETDATA_PREFIX}/etc/netdata/.environment" +sed -i "s/REINSTALL_OPTIONS=\".*\"/REINSTALL_OPTIONS=\"${REINSTALL_OPTIONS}\"/" "${NETDATA_PREFIX}/etc/netdata/.environment" # ----------------------------------------------------------------------------- if [ ${STARTIT} -eq 0 ]; then -- cgit v1.2.3