@cryptotaxi247 / netdata-1 / commits / 7c4d66848

add --install-version flag for installing specific version of Netdata (#12729)

* add --install-version flag for installing specific version of Netdata * remove empty lines * minor fix

maneamarius committed May 5, 2022 at 17:59 UTC 7c4d668485df4865fcb5bc73f3e86a7105323687
2 files changed +91 -22
packaging/installer/kickstart.sh
+90 -22
@@ -141,6 +141,7 @@ USAGE: kickstart.sh [options]
141 --install <path> This option is deprecated and will be removed in a future version, use --install-prefix instead.
142 --install-prefix <path> Specify an installation prefix for local builds (default: autodetect based on system type).
143 --old-install-prefix <path> Specify an old local builds installation prefix for uninstall/reinstall (if it's not default).
144 + --install-version <version> Specify the version of Netdata to install.
145 --claim-token Use a specified token for claiming to Netdata Cloud.
146 --claim-rooms When claiming, add the node to the specified rooms.
147 --claim-only If there is an existing install, only try to claim it, not update it.
@@ -1115,6 +1116,7 @@ set_auto_updates() {
1116 pkg_installed() {
1117 case "${DISTRO_COMPAT_NAME}" in
1118 debian|ubuntu)
1119 + # shellcheck disable=SC2016
1120 dpkg-query --show --showformat '${Status}' "${1}" 2>&1 | cut -f 1 -d ' ' | grep -q '^install$'
1121 return $?
1122 ;;
@@ -1213,6 +1215,7 @@ try_package_install() {
1215 repo_update_opts="${interactive_opts}"
1216 uninstall_subcmd="purge"
1217 INSTALL_TYPE="binpkg-deb"
1218 + NATIVE_VERSION="${INSTALL_VERSION:+"=${INSTALL_VERSION}"}"
1219 ;;
1220 ubuntu)
1221 needs_early_refresh=1
@@ -1226,6 +1229,7 @@ try_package_install() {
1229 repo_update_opts="${interactive_opts}"
1230 uninstall_subcmd="purge"
1231 INSTALL_TYPE="binpkg-deb"
1232 + NATIVE_VERSION="${INSTALL_VERSION:+"=${INSTALL_VERSION}"}"
1233 ;;
1234 centos)
1235 if command -v dnf > /dev/null; then
@@ -1242,6 +1246,7 @@ try_package_install() {
1246 repo_update_opts="${interactive_opts}"
1247 uninstall_subcmd="remove"
1248 INSTALL_TYPE="binpkg-rpm"
1249 + NATIVE_VERSION="${INSTALL_VERSION:+"-${INSTALL_VERSION}.${SYSARCH}"}"
1250 ;;
1251 fedora)
1252 if command -v dnf > /dev/null; then
@@ -1258,6 +1263,7 @@ try_package_install() {
1263 repo_update_opts="${interactive_opts}"
1264 uninstall_subcmd="remove"
1265 INSTALL_TYPE="binpkg-rpm"
1266 + NATIVE_VERSION="${INSTALL_VERSION:+"-${INSTALL_VERSION}.${SYSARCH}"}"
1267 ;;
1268 opensuse)
1269 pm_cmd="zypper"
@@ -1270,6 +1276,7 @@ try_package_install() {
1276 repo_update_opts=""
1277 uninstall_subcmd="remove"
1278 INSTALL_TYPE="binpkg-rpm"
1279 + NATIVE_VERSION="${INSTALL_VERSION:+"-${INSTALL_VERSION}.${SYSARCH}"}"
1280 ;;
1281 ol)
1282 if command -v dnf > /dev/null; then
@@ -1286,6 +1293,7 @@ try_package_install() {
1293 repo_update_opts="${interactive_opts}"
1294 uninstall_subcmd="remove"
1295 INSTALL_TYPE="binpkg-rpm"
1296 + NATIVE_VERSION="${INSTALL_VERSION:+"-${INSTALL_VERSION}.${SYSARCH}"}"
1297 ;;
1298 *)
1299 warning "We do not provide native packages for ${DISTRO}."
@@ -1366,7 +1374,7 @@ try_package_install() {
1374 fi
1375
1376 # shellcheck disable=SC2086
1369 - if ! run ${ROOTCMD} env ${env} ${pm_cmd} install ${pkg_install_opts} netdata; then
1377 + if ! run ${ROOTCMD} env ${env} ${pm_cmd} install ${pkg_install_opts} "netdata${NATIVE_VERSION}"; then
1378 warning "Failed to install Netdata package."
1379 if [ -z "${NO_CLEANUP}" ]; then
1380 progress "Attempting to uninstall repository configuration package."
@@ -1379,15 +1387,27 @@ try_package_install() {
1387
1388 # ======================================================================
1389 # Static build install code
1382 -
1390 +# shellcheck disable=SC2034,SC2086,SC2126
1391 set_static_archive_urls() {
1392 if [ "$1" = "stable" ]; then
1385 - latest="$(get_redirect "https://github.com/netdata/netdata/releases/latest")"
1386 - export NETDATA_STATIC_ARCHIVE_URL="https://github.com/netdata/netdata/releases/download/${latest}/netdata-${SYSARCH}-latest.gz.run"
1387 - export NETDATA_STATIC_ARCHIVE_CHECKSUM_URL="https://github.com/netdata/netdata/releases/download/${latest}/sha256sums.txt"
1393 + if [ -n "${INSTALL_VERSION}" ]; then
1394 + export NETDATA_STATIC_ARCHIVE_OLD_URL="https://github.com/netdata/netdata/releases/download/v${INSTALL_VERSION}/netdata-v${INSTALL_VERSION}.gz.run"
1395 + export NETDATA_STATIC_ARCHIVE_URL="https://github.com/netdata/netdata/releases/download/v${INSTALL_VERSION}/netdata-${SYSARCH}-v${INSTALL_VERSION}.gz.run"
1396 + export NETDATA_STATIC_ARCHIVE_CHECKSUM_URL="https://github.com/netdata/netdata/releases/download/v${INSTALL_VERSION}/sha256sums.txt"
1397 + else
1398 + latest="$(get_redirect "https://github.com/netdata/netdata/releases/latest")"
1399 + export NETDATA_STATIC_ARCHIVE_URL="https://github.com/netdata/netdata/releases/download/${latest}/netdata-${SYSARCH}-latest.gz.run"
1400 + export NETDATA_STATIC_ARCHIVE_CHECKSUM_URL="https://github.com/netdata/netdata/releases/download/${latest}/sha256sums.txt"
1401 + fi
1402 else
1389 - export NETDATA_STATIC_ARCHIVE_URL="${NETDATA_TARBALL_BASEURL}/netdata-${SYSARCH}-latest.gz.run"
1390 - export NETDATA_STATIC_ARCHIVE_CHECKSUM_URL="${NETDATA_TARBALL_BASEURL}/sha256sums.txt"
1403 + if [ -n "${INSTALL_VERSION}" ]; then
1404 + export NETDATA_STATIC_ARCHIVE_URL="${NETDATA_TARBALL_BASEURL}/netdata-${SYSARCH}-v${INSTALL_VERSION}.gz.run"
1405 + export NETDATA_STATIC_ARCHIVE_OLD_URL="${NETDATA_TARBALL_BASEURL}/netdata-v${INSTALL_VERSION}.gz.run"
1406 + export NETDATA_STATIC_ARCHIVE_CHECKSUM_URL="${NETDATA_TARBALL_BASEURL}/sha256sums.txt"
1407 + else
1408 + export NETDATA_STATIC_ARCHIVE_URL="${NETDATA_TARBALL_BASEURL}/netdata-${SYSARCH}-latest.gz.run"
1409 + export NETDATA_STATIC_ARCHIVE_CHECKSUM_URL="${NETDATA_TARBALL_BASEURL}/sha256sums.txt"
1410 + fi
1411 fi
1412 }
1413
@@ -1400,12 +1420,29 @@ try_static_install() {
1420 fi
1421
1422 # Check status code first, so that we can provide nicer fallback for dry runs.
1403 - if ! check_for_remote_file "${NETDATA_STATIC_ARCHIVE_URL}"; then
1423 + if check_for_remote_file "${NETDATA_STATIC_ARCHIVE_URL}"; then
1424 + if [ -n "${INSTALL_VERSION}" ]; then
1425 + if [ "${SELECTED_RELEASE_CHANNEL}" = "stable" ]; then
1426 + netdata_agent="${NETDATA_STATIC_ARCHIVE_URL#"https://github.com/netdata/netdata/releases/download/v${INSTALL_VERSION}/"}"
1427 + else
1428 + netdata_agent="${NETDATA_STATIC_ARCHIVE_URL#"${NETDATA_TARBALL_BASEURL}/"}"
1429 + fi
1430 + else
1431 + if [ "${SELECTED_RELEASE_CHANNEL}" = "stable" ]; then
1432 + netdata_agent="${NETDATA_STATIC_ARCHIVE_URL#"https://github.com/netdata/netdata/releases/download/${latest}/"}"
1433 + else
1434 + netdata_agent="${NETDATA_STATIC_ARCHIVE_URL#"${NETDATA_TARBALL_BASEURL}/"}"
1435 + fi
1436 + fi
1437 + elif [ "${SYSARCH}" = "x86_64" ] && check_for_remote_file "${NETDATA_STATIC_ARCHIVE_OLD_URL}"; then
1438 + netdata_agent="${NETDATA_STATIC_ARCHIVE_OLD_URL#"https://github.com/netdata/netdata/releases/download/v${INSTALL_VERSION}/"}"
1439 + export NETDATA_STATIC_ARCHIVE_URL="${NETDATA_STATIC_ARCHIVE_OLD_URL}"
1440 + else
1441 warning "No static build available for ${SYSARCH} CPUs."
1442 return 2
1443 fi
1444
1408 - if ! download "${NETDATA_STATIC_ARCHIVE_URL}" "${tmpdir}/netdata-${SYSARCH}-latest.gz.run"; then
1445 + if ! download "${NETDATA_STATIC_ARCHIVE_URL}" "${tmpdir}/${netdata_agent}"; then
1446 fatal "Unable to download static build archive for ${SYSARCH}." F0208
1447 fi
1448
@@ -1416,8 +1453,10 @@ try_static_install() {
1453 if [ "${DRY_RUN}" -eq 1 ]; then
1454 progress "Would validate SHA256 checksum of downloaded static build archive."
1455 else
1419 - if ! grep "netdata-${SYSARCH}-latest.gz.run" "${tmpdir}/sha256sum.txt" | safe_sha256sum -c - > /dev/null 2>&1; then
1420 - 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
1456 + if [ -z "${INSTALL_VERSION}" ]; then
1457 + if ! grep "${netdata_agent}" "${tmpdir}/sha256sum.txt" | safe_sha256sum -c - > /dev/null 2>&1; then
1458 + 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
1459 + fi
1460 fi
1461 fi
1462
@@ -1427,7 +1466,7 @@ try_static_install() {
1466
1467 progress "Installing netdata"
1468 # shellcheck disable=SC2086
1430 - if ! run ${ROOTCMD} sh "${tmpdir}/netdata-${SYSARCH}-latest.gz.run" ${opts} -- ${NETDATA_INSTALLER_OPTIONS}; then
1469 + if ! run ${ROOTCMD} sh "${tmpdir}/${netdata_agent}" ${opts} -- ${NETDATA_INSTALLER_OPTIONS}; then
1470 warning "Failed to install static build of Netdata on ${SYSARCH}."
1471 run rm -rf /opt/netdata
1472 return 2
@@ -1455,12 +1494,22 @@ try_static_install() {
1494
1495 set_source_archive_urls() {
1496 if [ "$1" = "stable" ]; then
1458 - latest="$(get_redirect "https://github.com/netdata/netdata/releases/latest")"
1459 - export NETDATA_SOURCE_ARCHIVE_URL="https://github.com/netdata/netdata/releases/download/${latest}/netdata-${latest}.tar.gz"
1460 - export NETDATA_SOURCE_ARCHIVE_CHECKSUM_URL="https://github.com/netdata/netdata/releases/download/${latest}/sha256sums.txt"
1497 + if [ -n "${INSTALL_VERSION}" ]; then
1498 + export NETDATA_SOURCE_ARCHIVE_URL="https://github.com/netdata/netdata/releases/download/v${INSTALL_VERSION}/netdata-v${INSTALL_VERSION}.tar.gz"
1499 + export NETDATA_SOURCE_ARCHIVE_CHECKSUM_URL="https://github.com/netdata/netdata/releases/download/v${INSTALL_VERSION}/sha256sums.txt"
1500 + else
1501 + latest="$(get_redirect "https://github.com/netdata/netdata/releases/latest")"
1502 + export NETDATA_SOURCE_ARCHIVE_URL="https://github.com/netdata/netdata/releases/download/${latest}/netdata-${latest}.tar.gz"
1503 + export NETDATA_SOURCE_ARCHIVE_CHECKSUM_URL="https://github.com/netdata/netdata/releases/download/${latest}/sha256sums.txt"
1504 + fi
1505 else
1462 - export NETDATA_SOURCE_ARCHIVE_URL="${NETDATA_TARBALL_BASEURL}/netdata-latest.tar.gz"
1463 - export NETDATA_SOURCE_ARCHIVE_CHECKSUM_URL="${NETDATA_TARBALL_BASEURL}/sha256sums.txt"
1506 + if [ -n "${INSTALL_VERSION}" ]; then
1507 + export NETDATA_SOURCE_ARCHIVE_URL="${NETDATA_TARBALL_BASEURL}/netdata-v${INSTALL_VERSION}.tar.gz"
1508 + export NETDATA_SOURCE_ARCHIVE_CHECKSUM_URL="${NETDATA_TARBALL_BASEURL}/sha256sums.txt"
1509 + else
1510 + export NETDATA_SOURCE_ARCHIVE_URL="${NETDATA_TARBALL_BASEURL}/netdata-latest.tar.gz"
1511 + export NETDATA_SOURCE_ARCHIVE_CHECKSUM_URL="${NETDATA_TARBALL_BASEURL}/sha256sums.txt"
1512 + fi
1513 fi
1514 }
1515
@@ -1557,7 +1606,11 @@ try_build_install() {
1606
1607 set_source_archive_urls "${SELECTED_RELEASE_CHANNEL}"
1608
1560 - if ! download "${NETDATA_SOURCE_ARCHIVE_URL}" "${tmpdir}/netdata-latest.tar.gz"; then
1609 + if [ -n "${INSTALL_VERSION}" ]; then
1610 + if ! download "${NETDATA_SOURCE_ARCHIVE_URL}" "${tmpdir}/netdata-v${INSTALL_VERSION}.tar.gz"; then
1611 + fatal "Failed to download source tarball for local build." F000B
1612 + fi
1613 + elif ! download "${NETDATA_SOURCE_ARCHIVE_URL}" "${tmpdir}/netdata-latest.tar.gz"; then
1614 fatal "Failed to download source tarball for local build." F000B
1615 fi
1616
@@ -1568,13 +1621,22 @@ try_build_install() {
1621 if [ "${DRY_RUN}" -eq 1 ]; then
1622 progress "Would validate SHA256 checksum of downloaded source archive."
1623 else
1571 - if ! grep netdata-latest.tar.gz "${tmpdir}/sha256sum.txt" | safe_sha256sum -c - > /dev/null 2>&1; then
1572 - 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
1624 + if [ -z "${INSTALL_VERSION}" ]; then
1625 + # shellcheck disable=SC2086
1626 + if ! grep netdata-latest.tar.gz "${tmpdir}/sha256sum.txt" | safe_sha256sum -c - > /dev/null 2>&1; then
1627 + 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
1628 + fi
1629 fi
1630 fi
1631
1576 - run tar -xf "${tmpdir}/netdata-latest.tar.gz" -C "${tmpdir}"
1577 - rm -rf "${tmpdir}/netdata-latest.tar.gz" > /dev/null 2>&1
1632 + if [ -n "${INSTALL_VERSION}" ]; then
1633 + run tar -xf "${tmpdir}/netdata-v${INSTALL_VERSION}.tar.gz" -C "${tmpdir}"
1634 + rm -rf "${tmpdir}/netdata-v${INSTALL_VERSION}.tar.gz" > /dev/null 2>&1
1635 + else
1636 + run tar -xf "${tmpdir}/netdata-latest.tar.gz" -C "${tmpdir}"
1637 + rm -rf "${tmpdir}/netdata-latest.tar.gz" > /dev/null 2>&1
1638 + fi
1639 +
1640 if [ "${DRY_RUN}" -ne 1 ]; then
1641 cd "$(find "${tmpdir}" -mindepth 1 -maxdepth 1 -type d -name netdata-)" || fatal "Cannot change directory to netdata source tree" F0006
1642 fi
@@ -1775,6 +1837,12 @@ while [ -n "${1}" ]; do
1837 INSTALL_PREFIX="${2}"
1838 shift 1
1839 ;;
1840 + "--install-version")
1841 + INSTALL_VERSION="${2}"
1842 + # shellcheck disable=SC2034
1843 + AUTO_UPDATES=0
1844 + shift 1
1845 + ;;
1846 "--old-install-prefix")
1847 OLD_INSTALL_PREFIX="${2}"
1848 shift 1
packaging/installer/methods/kickstart.md
+1
@@ -70,6 +70,7 @@ The `kickstart.sh` script accepts a number of optional parameters to control how
70 - `--require-cloud`: Only install if Netdata Cloud can be enabled. Overrides `--disable-cloud`.
71 - `--install`: Specify an installation prefix for local builds (by default, we use a sane prefix based on the type of system), this option is deprecated and will be removed in a future version, please use `--install-prefix` instead.
72 - `--install-prefix`: Specify an installation prefix for local builds (by default, we use a sane prefix based on the type of system).
73 +- `--install-version`: Specify the version of Netdata to install.
74 - `--old-install-prefix`: Specify the custom local build's installation prefix that should be removed.
75 - `--uninstall`: Uninstall an existing installation of Netdata.
76 - `--reinstall-clean`: Performs an uninstall of Netdata and clean installation.