summaryrefslogtreecommitdiffstats
path: root/installer
diff options
context:
space:
mode:
Diffstat (limited to 'installer')
-rw-r--r--installer/.keep0
-rw-r--r--installer/functions.sh85
2 files changed, 54 insertions, 31 deletions
diff --git a/installer/.keep b/installer/.keep
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/installer/.keep
diff --git a/installer/functions.sh b/installer/functions.sh
index 7e522f0aa..dc2833318 100644
--- a/installer/functions.sh
+++ b/installer/functions.sh
@@ -1,4 +1,6 @@
# no shebang necessary - this is a library to be sourced
+# SPDX-License-Identifier: GPL-3.0-or-later
+# shellcheck disable=SC1091,SC1117,SC2002,SC2004,SC2034,SC2046,SC2059,SC2086,SC2129,SC2148,SC2154,SC2155,SC2162,SC2166,SC2181,SC2193
# make sure we have a UID
[ -z "${UID}" ] && UID="$(id -u)"
@@ -8,8 +10,8 @@
# checking the availability of commands
which_cmd() {
- which "${1}" 2>/dev/null || \
- command -v "${1}" 2>/dev/null
+ # shellcheck disable=SC2230
+ which "${1}" 2>/dev/null || command -v "${1}" 2>/dev/null
}
check_cmd() {
@@ -160,6 +162,29 @@ pidof() {
}
# -----------------------------------------------------------------------------
+# portable delete recursively interactively
+
+portable_deletedir_recursively_interactively() {
+ if [ ! -z "$1" -a -d "$1" ]
+ then
+ if [ "$(uname -s)" = "Darwin" ]
+ then
+ echo >&2
+ read >&2 -p "Press ENTER to recursively delete directory '$1' > "
+ echo >&2 "Deleting directory '$1' ..."
+ run rm -R "$1"
+ else
+ echo >&2
+ echo >&2 "Deleting directory '$1' ..."
+ run rm -I -R "$1"
+ fi
+ else
+ echo "Directory '$1' does not exist."
+ fi
+}
+
+
+# -----------------------------------------------------------------------------
export SYSTEM_CPUS=1
portable_find_processors() {
@@ -287,6 +312,7 @@ portable_add_user() {
echo >&2 "Adding ${username} user account with home ${homedir} ..."
+ # shellcheck disable=SC2230
local nologin="$(which nologin 2>/dev/null || command -v nologin 2>/dev/null || echo '/bin/false')"
# Linux
@@ -415,10 +441,11 @@ iscontainer() {
issystemd() {
local pids p myns ns systemctl
- # if the directory /etc/systemd/system does not exit, it is not systemd
- [ ! -d /etc/systemd/system ] && return 1
+ # if the directory /lib/systemd/system does not exit, it is not systemd
+ [ ! -d /lib/systemd/system ] && return 1
# if there is no systemctl command, it is not systemd
+ # shellcheck disable=SC2230
systemctl=$(which systemctl 2>/dev/null || command -v systemctl 2>/dev/null)
[ -z "${systemctl}" -o ! -x "${systemctl}" ] && return 1
@@ -436,7 +463,7 @@ issystemd() {
ns="$(readlink /proc/${p}/ns/pid 2>/dev/null)"
# if pid of systemd is in our namespace, it is systemd
- [ ! -z "${myns}" && "${myns}" = "${ns}" ] && return 0
+ [ ! -z "${myns}" ] && [ "${myns}" = "${ns}" ] && return 0
done
# else, it is not systemd
@@ -478,7 +505,7 @@ install_non_systemd_init() {
run update-rc.d netdata defaults && \
run update-rc.d netdata enable && \
return 0
- elif [[ "${key}" =~ ^(amzn-201[567]|ol|CentOS release 6|Red Hat Enterprise Linux Server release 6|Scientific Linux CERN SLC release 6|CloudLinux Server release 6).* ]]
+ elif [[ "${key}" =~ ^(amzn-201[5678]|ol|CentOS release 6|Red Hat Enterprise Linux Server release 6|Scientific Linux CERN SLC release 6|CloudLinux Server release 6).* ]]
then
echo >&2 "Installing init.d file..."
run cp system/netdata-init-d /etc/init.d/netdata && \
@@ -511,8 +538,16 @@ install_netdata_service() {
if [ "${uname}" = "Darwin" ]
then
- echo >&2 "hm... I don't know how to install a startup script for MacOS X"
- return 1
+ if [ -f "/Library/LaunchDaemons/com.github.netdata.plist" ]
+ then
+ echo >&2 "file '/Library/LaunchDaemons/com.github.netdata.plist' already exists."
+ return 0
+ else
+ echo >&2 "Installing MacOS X plist file..."
+ run cp system/netdata.plist /Library/LaunchDaemons/com.github.netdata.plist && \
+ run launchctl load /Library/LaunchDaemons/com.github.netdata.plist && \
+ return 0
+ fi
elif [ "${uname}" = "FreeBSD" ]
then
@@ -528,16 +563,15 @@ install_netdata_service() {
NETDATA_START_CMD="systemctl start netdata"
NETDATA_STOP_CMD="systemctl stop netdata"
- if [ ! -f /etc/systemd/system/netdata.service ]
+ if [ -d "/lib/systemd/system" ]
then
echo >&2 "Installing systemd service..."
- run cp system/netdata.service /etc/systemd/system/netdata.service && \
+ run cp system/netdata.service /lib/systemd/system/netdata.service && \
run systemctl daemon-reload && \
run systemctl enable netdata && \
return 0
else
- echo >&2 "file '/etc/systemd/system/netdata.service' already exists."
- return 0
+ echo >&2 "no '/lib/systemd/system' directory; cannot install netdata.service"
fi
else
install_non_systemd_init
@@ -792,31 +826,20 @@ download_netdata_conf() {
# -----------------------------------------------------------------------------
# add netdata user and group
-NETDATA_ADDED_TO_DOCKER=0
-NETDATA_ADDED_TO_NGINX=0
-NETDATA_ADDED_TO_VARNISH=0
-NETDATA_ADDED_TO_HAPROXY=0
-NETDATA_ADDED_TO_ADM=0
-NETDATA_ADDED_TO_NSD=0
-NETDATA_ADDED_TO_PROXY=0
-NETDATA_ADDED_TO_SQUID=0
-NETDATA_ADDED_TO_CEPH=0
+NETDATA_WANTED_GROUPS="docker nginx varnish haproxy adm nsd proxy squid ceph nobody"
+NETDATA_ADDED_TO_GROUPS=""
add_netdata_user_and_group() {
- local homedir="${1}"
+ local homedir="${1}" g
if [ ${UID} -eq 0 ]
then
portable_add_group netdata || return 1
portable_add_user netdata "${homedir}" || return 1
- portable_add_user_to_group docker netdata && NETDATA_ADDED_TO_DOCKER=1
- portable_add_user_to_group nginx netdata && NETDATA_ADDED_TO_NGINX=1
- portable_add_user_to_group varnish netdata && NETDATA_ADDED_TO_VARNISH=1
- portable_add_user_to_group haproxy netdata && NETDATA_ADDED_TO_HAPROXY=1
- portable_add_user_to_group adm netdata && NETDATA_ADDED_TO_ADM=1
- portable_add_user_to_group nsd netdata && NETDATA_ADDED_TO_NSD=1
- portable_add_user_to_group proxy netdata && NETDATA_ADDED_TO_PROXY=1
- portable_add_user_to_group squid netdata && NETDATA_ADDED_TO_SQUID=1
- portable_add_user_to_group ceph netdata && NETDATA_ADDED_TO_CEPH=1
+
+ for g in ${NETDATA_WANTED_GROUPS}
+ do
+ portable_add_user_to_group ${g} netdata && NETDATA_ADDED_TO_GROUPS="${NETDATA_ADDED_TO_GROUPS} ${g}"
+ done
[ ~netdata = / ] && cat <<USERMOD