#!/bin/bash
-# Copyright (C) 2019 Ian Kelling
-# SPDX-License-Identifier: AGPL-3.0-or-later
+# I, Ian Kelling, follow the GNU license recommendations at
+# https://www.gnu.org/licenses/license-recommendations.en.html. They
+# recommend that small programs, < 300 lines, be licensed under the
+# Apache License 2.0. This file contains or is part of one or more small
+# programs. If a small program grows beyond 300 lines, I plan to switch
+# its license to GPL.
+
+# Copyright 2024 Ian Kelling
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# usage: set DEBUG env var to anything to output to stdout
# Note: running this inside a cronjob, it wont mail any output if we end
# up rebooting from this script.
-if [ -z "$BASH_VERSION" ]; then echo "error: shell is not bash" >&2; exit 1; fi
+set -e; . /usr/local/lib/bash-bear; set +e
-source /usr/local/lib/err
pre="${0##*/}:"
PATH="/sbin:$PATH"
m() { printf "$pre %s\n" "$*"; "$@"; }
fi
}
myreboot() {
+ if [[ -e /tmp/myupgrade-noreboot ]]; then
+ e "would rebooted but /tmp/myupgrade-noreboot exists"
+ return
+ fi
+
for x in {30..1}; do
echo "pid $$. unattended upgrade, rebooting in $((x*10)) seconds" | wall -n 2>/dev/null
sleep 10
}
-case $HOSTNAME in
+case $hn in
kd)
- /a/bin/buildscripts/prometheus
+ /c/roles/prom/files/simple/usr/local/bin/fsf-install-prometheus
+ /c/roles/prom_export/files/simple/usr/local/bin/fsf-install-node-exporter -l 127.0.0.1
+ ;;
+ li|bk|je)
+ /c/roles/prom_export/files/simple/usr/local/bin/fsf-install-node-exporter -l 127.0.0.1
+ ;;
+ *)
+ /c/roles/prom_export/files/simple/usr/local/bin/fsf-install-node-exporter
+ ;;
+esac
+
+case $hn in
+ sy)
+ /b/fai/config/distro-install-common/install-stable-kernel-debs
;;
esac
# because rebooting from the script stops the ability to send email.
# We should figure some workaround.
-if ! out=$(/sbin/needrestart -p 2>&1); then
- if [[ $HOSTNAME == "$MAIL_HOST" ]]; then
+# I originally had the idea that for MAIL_HOST, I'd just send an email
+# if something needs restarting. But atm, I have a bad habit of ignoring
+# those emails.
+
+if ! needrestart -p -k &>/dev/null; then
+ myreboot
+fi
+
+needrestart -b -l -r a |& logger -t myupgrade
+sleep 1
+
+# Restart based on library doesnt always work. If we still
+# detect outdated libraries after trying to automatically restart,
+# then do a reboot unless we are on systems we care a bit more about
+# uptime, then send us an email.
+#
+# Note: I've noticed restart based on library has tended to screw up
+# desktop related daemons because they have bugs when restarted in
+# isolation instead of as part of bring up and down the whole desktop.
+# But, I'd rather something gets messed up than things not get
+# restarted.
+if ! /sbin/needrestart -p &>/dev/null; then
+ if [[ $hn == "$MAIL_HOST" || $hn == kd ]]; then
+ # send us an email so we can decide what to do
needrestart -r l
else
myreboot