42 lines
1.2 KiB
Bash
42 lines
1.2 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
set -o errexit
|
||
|
|
set -o nounset
|
||
|
|
set -o pipefail
|
||
|
|
|
||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
|
# shellcheck source=00-platform-guard.inc
|
||
|
|
source "$SCRIPT_DIR/00-platform-guard.inc"
|
||
|
|
|
||
|
|
packages=(
|
||
|
|
curl wget git vim nano tmux byobu htop btop glances
|
||
|
|
jq unzip zip rsync tree ncdu duf
|
||
|
|
lsof strace tcpdump nmap dnsutils net-tools iperf3 ethtool
|
||
|
|
smartmontools nvme-cli lm-sensors pciutils usbutils hwinfo
|
||
|
|
sysstat iotop iftop nload
|
||
|
|
ca-certificates gnupg software-properties-common apt-transport-https
|
||
|
|
needrestart unattended-upgrades logrotate
|
||
|
|
)
|
||
|
|
|
||
|
|
if ((EUID != 0)); then
|
||
|
|
printf 'CRITICAL: base package setup must run as root\n' >&2
|
||
|
|
exit 2
|
||
|
|
fi
|
||
|
|
require_supported_ubuntu
|
||
|
|
if ! command -v apt-get >/dev/null 2>&1; then
|
||
|
|
printf 'CRITICAL: apt-get is required\n' >&2
|
||
|
|
exit 2
|
||
|
|
fi
|
||
|
|
|
||
|
|
printf 'INFO: refreshing APT metadata\n'
|
||
|
|
apt-get update
|
||
|
|
printf 'INFO: installing baseline operational packages\n'
|
||
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -y "${packages[@]}"
|
||
|
|
|
||
|
|
if command -v systemctl >/dev/null 2>&1; then
|
||
|
|
systemctl enable --now sysstat
|
||
|
|
else
|
||
|
|
printf 'WARNING: systemctl is unavailable; sysstat was not enabled\n'
|
||
|
|
fi
|
||
|
|
|
||
|
|
printf 'OK: baseline operational packages are installed\n'
|