- Stoppt und deaktiviert alte salt-minion/master Services - Purged alte Salt-Pakete komplett (apt remove --purge) - Loescht /etc/salt, /var/cache/salt, /var/log/salt, /var/run/salt - Loescht alte Repo-Configs und Keys - Danach saubere Neuinstallation
101 lines
2.6 KiB
Bash
Executable File
101 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# Salt Minion Installation fuer cynfo-Kundenserver
|
|
# Verwendung: bash install-minion.sh <KUNDENNUMMER>
|
|
# 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 <KUNDENNUMMER>"
|
|
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."
|