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.