Files
zabbix-agent-deployment/deploy-zabbix-agent.sh

62 lines
3.1 KiB
Bash
Executable File
Raw Permalink 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.

#!/usr/bin/env bash
# =============================================================================
# Zabbix Agent 2 Remote-Deployment via SSH
#
# Aufruf:
# bash deploy-zabbix-agent.sh <ssh-config-name> <zabbix-hostname>
#
# Beispiele:
# bash deploy-zabbix-agent.sh webserver webserver-prod-01
# bash deploy-zabbix-agent.sh db-server db-server-02
#
# Der <ssh-config-name> 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 <ssh-config-name> <zabbix-hostname>\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."