Startet VMs, führt Updates aus und fährt diese dann wieder Runter
This commit is contained in:
parent
a17b869b07
commit
6c9b98d07b
74
Playbooks/update-stopped-vms.sh
Normal file
74
Playbooks/update-stopped-vms.sh
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Proxmox-Server-IPs und Login-Daten
|
||||||
|
PROXMOX_SERVERS=("192.168.178.2" "192.168.178.3")
|
||||||
|
SSH_USER="root"
|
||||||
|
SSH_KEY_PATH="/root/.ssh/id_rsa" # Pfad zu deinem SSH-Schlüssel
|
||||||
|
|
||||||
|
# Funktion, um alle VMs auf einem Proxmox-Server zu starten
|
||||||
|
start_vms_if_needed() {
|
||||||
|
local server=$1
|
||||||
|
echo "Verbinde mit Server: $server"
|
||||||
|
|
||||||
|
# Liste der VMs, die derzeit nicht laufen
|
||||||
|
ssh -i "$SSH_KEY_PATH" "$SSH_USER@$server" "qm list | grep -v 'status running' | awk '{print \$1}'" | while read vmid; do
|
||||||
|
echo "Starte VM mit ID: $vmid"
|
||||||
|
# VM starten
|
||||||
|
ssh -i "$SSH_KEY_PATH" "$SSH_USER@$server" "qm start $vmid"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funktion für das Update, Upgrade und Bereinigung auf einer VM
|
||||||
|
update_vm() {
|
||||||
|
local server=$1
|
||||||
|
local vmid=$2
|
||||||
|
local was_running=$3 # Flag, ob die VM ursprünglich lief (1 = ja, 0 = nein)
|
||||||
|
|
||||||
|
echo "Führe Update und Upgrade für VM ID $vmid auf Server $server aus"
|
||||||
|
|
||||||
|
# Update und Upgrade auf der VM durchführen
|
||||||
|
ssh -i "$SSH_KEY_PATH" "$SSH_USER@$server" << EOF
|
||||||
|
qm terminal $vmid -- /bin/bash -c "
|
||||||
|
echo 'Update starte auf VM $vmid...'
|
||||||
|
apt-get update && apt-get upgrade -y && apt-get autoremove -y && apt-get clean
|
||||||
|
echo 'Update abgeschlossen auf VM $vmid'
|
||||||
|
"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Wenn die VM ursprünglich nicht lief, nach dem Update wieder herunterfahren
|
||||||
|
if [ "$was_running" -eq 0 ]; then
|
||||||
|
echo "Fahre VM mit ID $vmid nach dem Update herunter."
|
||||||
|
ssh -i "$SSH_KEY_PATH" "$SSH_USER@$server" "qm stop $vmid"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funktion, um alle VMs auf einem Server zu überprüfen und zu aktualisieren
|
||||||
|
check_and_update_vms() {
|
||||||
|
local server=$1
|
||||||
|
echo "Überprüfe VMs auf Server: $server"
|
||||||
|
|
||||||
|
# Alle VMs durchgehen und sicherstellen, dass sie laufen
|
||||||
|
ssh -i "$SSH_KEY_PATH" "$SSH_USER@$server" "qm list | awk '{print \$1}' | tail -n +2" | while read vmid; do
|
||||||
|
# Prüfen, ob VM läuft
|
||||||
|
status=$(ssh -i "$SSH_KEY_PATH" "$SSH_USER@$server" "qm status $vmid")
|
||||||
|
was_running=0
|
||||||
|
|
||||||
|
if [[ "$status" == *"running"* ]]; then
|
||||||
|
# VM läuft, keine Notwendigkeit zum Starten
|
||||||
|
was_running=1
|
||||||
|
else
|
||||||
|
# VM läuft nicht, starte sie
|
||||||
|
start_vms_if_needed "$server"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Nach dem Starten das Update/Upgrade durchführen
|
||||||
|
update_vm "$server" "$vmid" "$was_running"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Hauptprozess, alle Server abarbeiten
|
||||||
|
for server in "${PROXMOX_SERVERS[@]}"; do
|
||||||
|
check_and_update_vms "$server"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Alle VMs wurden aktualisiert, bereinigt und nach Bedarf heruntergefahren."
|
||||||
Loading…
Reference in New Issue
Block a user