#!/usr/bin/env bash # ============================================================================= # Zabbix Agent 2 – Remote-Deployment via SSH # # Aufruf: # bash deploy-zabbix-agent.sh # # Beispiele: # bash deploy-zabbix-agent.sh webserver webserver-prod-01 # bash deploy-zabbix-agent.sh db-server db-server-02 # # Der entspricht dem Host-Eintrag in ~/.ssh/config. # User, Port und Key werden von dort automatisch übernommen. # ============================================================================= set -euo pipefail # Farben RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m' info() { echo -e "${GREEN}[INFO]${NC} $*"; } warn() { echo -e "${YELLOW}[WARN]${NC} $*"; } error() { echo -e "${RED}[ERROR]${NC} $*" >&2; exit 1; } # ── Parameter ───────────────────────────────────────────────────────────────── [[ $# -lt 2 ]] && error "Aufruf: $0 \nBeispiel: $0 webserver webserver-prod-01" SSH_HOST="$1" ZABBIX_HOSTNAME="$2" REMOTE_TMP="/tmp/install-zabbix-agent.sh" # Pfad zum Install-Skript (liegt im selben Verzeichnis wie dieses Skript) SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" INSTALL_SCRIPT="${SCRIPT_DIR}/install-zabbix-agent.sh" # ── Prüfungen ───────────────────────────────────────────────────────────────── [[ ! -f "$INSTALL_SCRIPT" ]] && error "Install-Skript nicht gefunden: ${INSTALL_SCRIPT}" # SSH-Verbindung testen info "Teste SSH-Verbindung zu '${SSH_HOST}' (via ~/.ssh/config) ..." ssh -o ConnectTimeout=10 \ -o BatchMode=yes \ -o StrictHostKeyChecking=accept-new \ "${SSH_HOST}" "echo ok" > /dev/null \ || error "SSH-Verbindung fehlgeschlagen. Ist '${SSH_HOST}' in ~/.ssh/config definiert und erreichbar?" # ── Skript übertragen ───────────────────────────────────────────────────────── info "Übertrage Install-Skript auf '${SSH_HOST}' ..." scp -q \ -o StrictHostKeyChecking=accept-new \ "$INSTALL_SCRIPT" \ "${SSH_HOST}:${REMOTE_TMP}" # ── Remote-Installation ─────────────────────────────────────────────────────── info "Starte Installation auf '${SSH_HOST}' (Zabbix-Hostname: ${ZABBIX_HOSTNAME}) ..." echo "──────────────────────────────────────────────────" ssh -o StrictHostKeyChecking=accept-new \ "${SSH_HOST}" \ "bash ${REMOTE_TMP} ${ZABBIX_HOSTNAME}; rm -f ${REMOTE_TMP}" echo "──────────────────────────────────────────────────" info "Deployment auf '${SSH_HOST}' abgeschlossen."