@cryptotaxi247 / netdata-1 / commits / f3cce1e47

protected configuration on updates; use supplied commands by default

Costa Tsaousis (ktsaou) committed Apr 1, 2017 at 19:05 UTC f3cce1e472a4204d5bc99eb9eeabba1d8d85bb0a
6 files changed +145 -37
makeself/functions.sh
+11
@@ -11,8 +11,19 @@
11 [ -z "${PROCESSORS}" -o $((PROCESSORS)) -lt 1 ] && export PROCESSORS=1
12 export NULL=
13
14 +# make sure the path does not end with /
15 +if [ "${NETDATA_INSTALL_PATH:$(( ${#NETDATA_INSTALL_PATH} - 1)):1}" = "/" ]
16 + then
17 + export NETDATA_INSTALL_PATH="${NETDATA_INSTALL_PATH:0:$(( ${#NETDATA_INSTALL_PATH} - 1))}"
18 +fi
19 +
20 +# find the parent directory
21 +export NETDATA_INSTALL_PARENT="$(dirname "${NETDATA_INSTALL_PATH}")"
22 +
23 +
24 # debug
25 echo "ME=${0}"
26 +echo "NETDATA_INSTALL_PARENT=${NETDATA_INSTALL_PARENT}"
27 echo "NETDATA_INSTALL_PATH=${NETDATA_INSTALL_PATH}"
28 echo "NETDATA_MAKESELF_PATH=${NETDATA_MAKESELF_PATH}"
29 echo "NETDATA_SOURCE_PATH=${NETDATA_SOURCE_PATH}"
makeself/install-or-update.sh
+60 -7
@@ -2,6 +2,49 @@
2
3 . $(dirname "${0}")/functions.sh
4
5 +# -----------------------------------------------------------------------------
6 +progress "Checking new configuration files"
7 +
8 +declare -A configs_signatures=()
9 +. system/configs.signatures
10 +
11 +if [ ! -d etc/netdata ]
12 + then
13 + mkdir -p etc/netdata
14 +fi
15 +
16 +for x in $(find etc/netdata.new -name '*.conf' -type f)
17 +do
18 + # find it relative filename
19 + f="${x/*etc\/netdata.new\//}"
20 + t="${x/*etc\/netdata.new\/etc\/netdata/}"
21 + d=$(dirname "${d}")
22 +
23 + if [ ! -d "${d}" ]
24 + then
25 + run mkdir -p "${d}"
26 + fi
27 +
28 + if [ ! -f "${t}" ]
29 + then
30 + run cp "${x}" "${t}"
31 + continue
32 + fi
33 +
34 + # find the checksum of the existing file
35 + md5="$(cat "${t}" | ${md5sum} | cut -d ' ' -f 1)"
36 +
37 + # check if it matches
38 + if [ "${configs_signatures[${md5}]}" = "${f}" ]
39 + then
40 + run cp "${x}" "${t}"
41 + else
42 + run cp "${x}" "${t}.orig"
43 + fi
44 +done
45 +
46 +
47 +# -----------------------------------------------------------------------------
48 progress "Add user netdata to required user groups"
49
50 NETDATA_ADDED_TO_DOCKER=0
@@ -25,28 +68,38 @@ else
68 run_failed "The installer does not run as root."
69 fi
70
71 +
72 # -----------------------------------------------------------------------------
73 progress "Install logrotate configuration for netdata"
74
75 if [ ${UID} -eq 0 ]
76 then
33 - if [ -d /etc/logrotate.d -a ! -f /etc/logrotate.d/netdata ]
77 + if [ -d /etc/logrotate.d ]
78 then
35 - run cp system/netdata.logrotate /etc/logrotate.d/netdata
36 - fi
79 + if [ ! -f /etc/logrotate.d/netdata ]
80 + then
81 + run cp system/netdata.logrotate /etc/logrotate.d/netdata
82 + fi
83
38 - if [ -f /etc/logrotate.d/netdata ]
39 - then
40 - run chmod 644 /etc/logrotate.d/netdata
84 + if [ -f /etc/logrotate.d/netdata ]
85 + then
86 + run chmod 644 /etc/logrotate.d/netdata
87 + fi
88 + else
89 + run_failed "logrotate dir /etc/logrotate.d is not available."
90 fi
91 +else
92 + run_failed "The installer does not run as root."
93 fi
94
95 +
96 # -----------------------------------------------------------------------------
97 progress "Install netdata at system init"
98
99 if [ "${UID}" -eq 0 ]
100 then
101 install_netdata_service
102 +else
103 + run_failed "The installer does not run as root."
104 fi
105
52 -
makeself/jobs/70-netdata-git.install.sh
+5 -16
@@ -2,23 +2,12 @@
2
3 . ${NETDATA_MAKESELF_PATH}/functions.sh "${@}" || exit 1
4
5 -cd .. || exit 1
5 +cd "${NETDATA_SOURCE_PATH}" || exit 1
6
7 export CFLAGS="-O3 -static"
8 -run ./netdata-installer.sh --install /opt --dont-wait --dont-start-it
8
10 -mkdir -p "${NETDATA_INSTALL_PATH}/system"
9 +run ./netdata-installer.sh --install "${NETDATA_INSTALL_PARENT}" \
10 + --dont-wait \
11 + --dont-start-it \
12 + ${NULL}
13
12 -cp \
13 - system/netdata-init-d \
14 - system/netdata-lsb \
15 - system/netdata-openrc \
16 - system/netdata.logrotate \
17 - system/netdata.service \
18 - "${NETDATA_INSTALL_PATH}/system/"
19 -
20 -cp \
21 - makeself/post-installer.sh \
22 - makeself/install-or-update.sh \
23 - installer/functions.sh \
24 - "${NETDATA_INSTALL_PATH}/system/"
makeself/jobs/80-netdata-links.install.sh deleted
-13
@@ -1,13 +0,0 @@
1 -#!/usr/bin/env bash
2 -
3 -. ${NETDATA_MAKESELF_PATH}/functions.sh "${@}" || exit 1
4 -
5 -run cd "${NETDATA_INSTALL_PATH}"
6 -run ln -s etc/netdata netdata-configs
7 -run ln -s usr/share/netdata/web netdata-web-files
8 -run ln -s usr/libexec/netdata netdata-plugins
9 -run ln -s var/lib/netdata netdata-dbs
10 -run ln -s var/cache/netdata netdata-metrics
11 -run ln -s var/log/netdata netdata-logs
12 -
13 -
makeself/jobs/99-makeself.install.sh
+62 -1
@@ -3,6 +3,68 @@
3 . $(dirname "${0}")/../functions.sh "${@}" || exit 1
4
5
6 +# -----------------------------------------------------------------------------
7 +# create a few quick links
8 +
9 +run cd "${NETDATA_INSTALL_PATH}"
10 +run ln -s etc/netdata netdata-configs
11 +run ln -s usr/share/netdata/web netdata-web-files
12 +run ln -s usr/libexec/netdata netdata-plugins
13 +run ln -s var/lib/netdata netdata-dbs
14 +run ln -s var/cache/netdata netdata-metrics
15 +run ln -s var/log/netdata netdata-logs
16 +
17 +
18 +# -----------------------------------------------------------------------------
19 +# copy the files needed by makeself installation
20 +
21 +run mkdir -p "${NETDATA_INSTALL_PATH}/system"
22 +run cd "${NETDATA_SOURCE_PATH}" || exit 1
23 +
24 +cp \
25 + makeself/post-installer.sh \
26 + makeself/install-or-update.sh \
27 + installer/functions.sh \
28 + configs.signatures \
29 + system/netdata-init-d \
30 + system/netdata-lsb \
31 + system/netdata-openrc \
32 + system/netdata.logrotate \
33 + system/netdata.service \
34 + "${NETDATA_INSTALL_PATH}/system/"
35 +
36 +
37 +# -----------------------------------------------------------------------------
38 +# create a wrapper to start our netdata with a modified path
39 +
40 +mv "${NETDATA_INSTALL_PATH}/bin/netdata" \
41 + "${NETDATA_INSTALL_PATH}/bin/netdata.bin" || exit 1
42 +
43 +cat >"${NETDATA_INSTALL_PATH}/bin/netdata" <<EOF
44 +#!${NETDATA_INSTALL_PATH}/bin/bash
45 +export PATH="${NETDATA_INSTALL_PATH}/bin:${PATH}"
46 +exec "${NETDATA_INSTALL_PATH}/bin/netdata.bin" "${@}"
47 +EOF
48 +chmod 755 "${NETDATA_INSTALL_PATH}/bin/netdata"
49 +
50 +
51 +# -----------------------------------------------------------------------------
52 +# move etc to protect the destination when unpacked
53 +
54 +if [ -d "${NETDATA_INSTALL_PATH}/etc/netdata" ]
55 + then
56 + if [ -d "${NETDATA_INSTALL_PATH}/etc/netdata.new" ]
57 + then
58 + rm -rf "${NETDATA_INSTALL_PATH}/etc/netdata.new" || exit 1
59 + fi
60 +
61 + mv "${NETDATA_INSTALL_PATH}/etc/netdata" \
62 + "${NETDATA_INSTALL_PATH}/etc/netdata.new" || exit 1
63 +fi
64 +
65 +
66 +# -----------------------------------------------------------------------------
67 +# create the makeself archive
68
69 "${NETDATA_MAKESELF_PATH}/makeself.sh" \
70 --gzip \
@@ -17,4 +79,3 @@
79 ./system/post-installer.sh \
80 ${NULL}
81
20 -
makeself/post-installer.sh
+7
@@ -1,3 +1,10 @@
1 #!/bin/sh
2
3 +# This script is started using the shell of the system
4 +# and executes our 'install-or-update.sh' script
5 +# using the netdata supplied, statically linked BASH
6 +#
7 +# so, at 'install-or-update.sh' we are always sure
8 +# we run under BASH v4.
9 +
10 ./bin/bash system/install-or-update.sh "${@}"