#!/bin/bash # Server-Setup-Skript für verschiedene Umgebungen #!/bin/bash # Server-Setup-Skript für verschiedene Umgebungen # Konfiguration ANSIBLE_INVENTORY="ansible/inventory/hosts.ini" SETUP_PLAYBOOK="ansible/setup.yml" # Farbdefinitionen GREEN="\033[0;32m" YELLOW="\033[1;33m" RED="\033[0;31m" NC="\033[0m" # No Color # Funktion zum Anzeigen von Nachrichten echo_msg() { echo -e "${GREEN}[SETUP]${NC} $1" } echo_warn() { echo -e "${YELLOW}[WARNUNG]${NC} $1" } echo_error() { echo -e "${RED}[FEHLER]${NC} $1" } # Parameter auswerten ENVIRONMENT="$1" TAGS="$2" if [ -z "$ENVIRONMENT" ]; then echo_warn "Keine Umgebung angegeben. Verfügbare Optionen:" echo " ./bin/setup staging - Staging-Server einrichten" echo " ./bin/setup prod - Produktionsserver einrichten" echo " ./bin/setup all - Alle Server einrichten" exit 1 fi # Tags zusammenbauen (falls angegeben) TAGS_OPTION="" if [ -n "$TAGS" ]; then TAGS_OPTION="--tags=$TAGS" echo_msg "Verwende Tags: $TAGS" fi # Limit für die Server-Auswahl LIMIT_OPTION="" case "$ENVIRONMENT" in staging|stage) LIMIT_OPTION="--limit=staging" echo_msg "Richte Staging-Server ein..." ;; prod|production) LIMIT_OPTION="--limit=production" echo_msg "Richte Produktionsserver ein..." read -p "Sind Sie sicher, dass Sie den Produktionsserver einrichten möchten? (j/N) " -n 1 -r echo if [[ ! $REPLY =~ ^[Jj]$ ]]; then echo_warn "Einrichtung des Produktionsservers abgebrochen." exit 1 fi ;; all) echo_msg "Richte alle Server ein..." ;; *) echo_error "Unbekannte Umgebung: $ENVIRONMENT" exit 1 ;; esac # Setup-Playbook ausführen echo_msg "Führe Ansible-Playbook aus..." ansible-playbook -i "$ANSIBLE_INVENTORY" "$SETUP_PLAYBOOK" $LIMIT_OPTION $TAGS_OPTION # Setup-Status prüfen if [ $? -eq 0 ]; then echo_msg "Server-Setup erfolgreich abgeschlossen." exit 0 else echo_error "Server-Setup fehlgeschlagen! Bitte überprüfen Sie die Logs." exit 1 fi