#!/bin/bash # Salt Minion Installation fuer cynfo-Kundenserver # Verwendung: bash install-minion.sh # Beispiel: bash install-minion.sh K100163 set -e KUNDE=$1 SALT_MASTER="salt.cynfo.net" if [ -z "$KUNDE" ]; then echo "Fehler: Kundennummer angeben!" echo "Verwendung: bash install-minion.sh " echo "Beispiel: bash install-minion.sh K100163" exit 1 fi echo "=== Salt Minion Installation ===" echo "Kunde: $KUNDE" echo "Salt Master: $SALT_MASTER" echo "Hostname: $(hostname)" echo "" # Detect OS if [ -f /etc/debian_version ]; then OS="debian" echo "OS: Debian/Ubuntu erkannt" elif [ -f /etc/redhat-release ]; then OS="rhel" echo "OS: RHEL/CentOS erkannt" else echo "Fehler: Unbekanntes OS" exit 1 fi # === CLEANUP: Alte Salt-Installation entfernen === echo "" echo "=== Cleanup alte Installation ===" # Stop services systemctl stop salt-minion 2>/dev/null || true systemctl stop salt-master 2>/dev/null || true systemctl disable salt-minion 2>/dev/null || true systemctl disable salt-master 2>/dev/null || true # Purge packages if [ "$OS" = "debian" ]; then apt-get remove --purge -y salt-minion salt-master salt-common salt-ssh 2>/dev/null || true apt-get autoremove -y 2>/dev/null || true fi # Remove config, keys, cache rm -rf /etc/salt rm -rf /var/cache/salt rm -rf /var/log/salt rm -rf /var/run/salt rm -rf /srv/salt rm -rf /srv/pillar # Remove old repo config rm -f /etc/apt/sources.list.d/salt*.list rm -f /etc/apt/keyrings/salt-archive-keyring.gpg echo "Alte Installation bereinigt." # === INSTALL: Frische Installation === echo "" echo "=== Frische Installation ===" if [ "$OS" = "debian" ]; then apt-get install -y gnupg2 curl >/dev/null 2>&1 curl -fsSL https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public | gpg --dearmor -o /etc/apt/keyrings/salt-archive-keyring.gpg echo 'deb [signed-by=/etc/apt/keyrings/salt-archive-keyring.gpg] https://packages.broadcom.com/artifactory/saltproject-deb/ stable main' > /etc/apt/sources.list.d/salt.list apt-get update >/dev/null 2>&1 apt-get install -y salt-minion fi # Configure Master mkdir -p /etc/salt/minion.d cat > /etc/salt/minion.d/master.conf << EOF master: $SALT_MASTER EOF # Set Grains (Kundennummer) cat > /etc/salt/grains << EOF kunde: $KUNDE EOF # Restart Minion systemctl enable salt-minion systemctl restart salt-minion echo "" echo "=== Fertig ===" echo "Salt Version: $(salt-minion --version)" echo "Minion ID: $(hostname)" echo "Grain: kunde: $KUNDE" echo "Master: $SALT_MASTER" echo "" echo "Naechster Schritt: Salt Master kontaktieren fuer Key-Akzeptanz."