Unter meiner Kontrolle befinden sich mittlerweile diverse Nextcloud Server. Wenn eine App aktualisiert wird, erhalte ich auch von jedem Server eine Mail dazu. Meist geht man dann mal auf eine Nextcloud Instanz, prüft rasch die Release-Information und macht dann ein Update. Wenn alles geht, dann kann man die App überall aktualisieren.
Wie macht man das automatisch?
Das geht mit tmux und folgendem Bash Script, das ich in die ~/.bash_aliases eingefügt habe:
#!/bin/bash
array=('SERVER1' 'SERVER2' 'SERVER3' 'SERVER4')
function occup() {
tmux new-session -d -s sshjob 'sleep 5 && exit'
for i in "${array[@]}"
do
read -d '' command <<EOF
printf \"Start Update auf $i\\n\" && /path/to/occ app:update --all && /path/to/occ update && printf \"Update fertig\\n\ && exit"
EOF
tmux split-window -h
tmux send-keys " ssh $i \"$command\"" C-m &
done
tmux select-layout tiled
tmux attach-session -t sshjob
}
Für ein ähnliches Problem habe ich mich mit ansible beschäftigt, da habe ich auch das Nextcloud App aktualisieren eingebaut: https://codeberg.org/Tealk/ansible_collection/src/branch/master/playbook/update-nextcloud-apps.yml
Danke für das Update. Da ist wohl ein Teil des Scriptes verloren gegangen. Ich lasse den Artikel aktualisieren.
Es sieht bei mir so aus, ich empfehle in das Script noch ein occ update anzufügen, weil gelegentlich Apps das Erfordern (Letztens bei mir der Kalender):
function occup() { tmux new-session -d -s sshjob 'sleep 5 && exit' for i in "${array[@]}" do read -d '' command <<EOF printf \"Start Update auf $i\n\" && /path/to/occ app:update --all && /path/to/occ update && printf \"Update fertig\n\ && exit" EOF tmux split-window -h tmux send-keys " ssh $i \"$command\"" C-m & done tmux select-layout tiled tmux attach-session -t sshjob }
Der Code im Artikel wurde nun vervollständigt.