62 lines
3.1 KiB
Bash
Executable File
62 lines
3.1 KiB
Bash
Executable File
#!/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."
|