#!/bin/sh -l # Führt das Ansible-Deploy-Playbook aus #!/bin/bash # Deployment-Skript für verschiedene Umgebungen # Konfiguration ANSIBLE_INVENTORY="ansible/inventory/hosts.ini" PLAYBOOK_DIR="ansible/playbooks/deploy" # 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}[DEPLOY]${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/deploy dev - Lokale Entwicklungsumgebung" echo " ./bin/deploy staging - Staging-Umgebung" echo " ./bin/deploy prod - Produktionsumgebung" exit 1 fi # Tags zusammenbauen (falls angegeben) TAGS_OPTION="" if [ -n "$TAGS" ]; then TAGS_OPTION="--tags=$TAGS" echo_msg "Verwende Tags: $TAGS" fi # Entsprechendes Playbook ausführen case "$ENVIRONMENT" in dev|development|local) echo_msg "Starte Deployment für lokale Entwicklungsumgebung..." ansible-playbook -i "$ANSIBLE_INVENTORY" "$PLAYBOOK_DIR/dev.yml" --ask-become-pass $TAGS_OPTION ;; staging|stage) echo_msg "Starte Deployment für Staging-Umgebung..." ansible-playbook -i "$ANSIBLE_INVENTORY" "$PLAYBOOK_DIR/staging.yml" $TAGS_OPTION ;; prod|production) echo_msg "Starte Deployment für Produktionsumgebung..." read -p "Sind Sie sicher, dass Sie in der Produktionsumgebung deployen möchten? (j/N) " -n 1 -r echo if [[ $REPLY =~ ^[Jj]$ ]]; then ansible-playbook -i "$ANSIBLE_INVENTORY" "$PLAYBOOK_DIR/production.yml" $TAGS_OPTION else echo_warn "Deployment in Produktionsumgebung abgebrochen." exit 1 fi ;; *) echo_error "Unbekannte Umgebung: $ENVIRONMENT" exit 1 ;; esac # Deployment-Status prüfen if [ $? -eq 0 ]; then echo_msg "Deployment erfolgreich abgeschlossen." exit 0 else echo_error "Deployment fehlgeschlagen! Bitte überprüfen Sie die Logs." exit 1 fi /home/michael/.local/bin/ansible-playbook -i ansible/inventory.ini ansible/playbooks/deploy.yml