espo-deploy/rmm-tasks/ESPO-02-Docker.sh
2026-09-23 10:16:44 +02:00

58 lines
2.6 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# ESPO-02-Docker – installiert Docker in gepinnter Version und setzt die Daemon-Grundlagen.
# Laeuft als root ueber einen RMM-Bash-Task, idempotent.
# Firewallregeln (ufw, DOCKER-USER) kommen in einem eigenen Task, weil dafuer die Adresse
# der OPNsense als Parameter gebraucht wird.
set -u
FEHLER=0
# Gepinnte Staende - hier wird der Flottenstand gesetzt, nicht auf der VM entschieden.
DOCKER_VERSION="5:29.8.1-1~ubuntu.24.04~noble"
CONTAINERD_VERSION="2.3.5-1~ubuntu.24.04~noble"
COMPOSE_VERSION="5.5.1-1~ubuntu.24.04~noble"
BUILDX_VERSION="0.37.1-1~ubuntu.24.04~noble"
# 1. Paketquelle von Docker einrichten (Schluessel und deb822-Quelle), falls noch nicht vorhanden.
install -m 0755 -d /etc/apt/keyrings
if [ ! -s /etc/apt/keyrings/docker.asc ]; then
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc || { echo "FEHLER: Schluessel nicht ladbar"; exit 1; }
chmod a+r /etc/apt/keyrings/docker.asc
fi
cat > /etc/apt/sources.list.d/docker.sources <<CONF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
CONF
apt-get update -qq || { echo "FEHLER: apt-get update"; exit 1; }
# 2. Genau diese Versionen installieren und auf Hold setzen, damit nichts unbemerkt nachzieht.
DEBIAN_FRONTEND=noninteractive apt-get install -y -qq \
docker-ce="$DOCKER_VERSION" docker-ce-cli="$DOCKER_VERSION" containerd.io="$CONTAINERD_VERSION" \
docker-compose-plugin="$COMPOSE_VERSION" docker-buildx-plugin="$BUILDX_VERSION" || { echo "FEHLER: Installation"; exit 1; }
apt-mark hold docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin >/dev/null
# 3. Daemon-Grundlagen: Logrotation (der Standardtreiber rotiert nicht) und veroeffentlichte
# Ports ohne Adressangabe nur auf die Loopback-Adresse binden.
install -d -m 755 /etc/docker
cat > /etc/docker/daemon.json <<'CONF'
{
"log-driver": "local",
"log-opts": { "max-size": "20m", "max-file": "5" },
"ip": "127.0.0.1",
"live-restore": true
}
CONF
systemctl enable --now docker >/dev/null 2>&1
systemctl restart docker || { echo "FEHLER: docker startet nicht"; exit 1; }
# 4. Ergebnis zeigen und pruefen.
docker --version
docker compose version
docker info --format 'Logtreiber: {{.LoggingDriver}} Live-Restore: {{.LiveRestoreEnabled}}'
[ "$(docker info --format '{{.LoggingDriver}}')" = "local" ] || { echo "FEHLER: Logtreiber nicht gesetzt"; FEHLER=1; }
if [ "$FEHLER" -eq 0 ]; then echo "ESPO02_ERGEBNIS: OK"; exit 0; else echo "ESPO02_ERGEBNIS: FEHLER"; exit 1; fi