Selbstupdate auf Debian Systemen

OP #7417947
Lesenswert?

Ich stehe vor der Aufgabe eine Software auf Debian hin und wieder updaten zu müssen oder updaten zu lassen. Bisher lief das immer über SSH und dann wurde per dpkg aktualisiert. Das Problem dabei ist natürlich, dass immer SSH zur Verfügung stehen muss und man schlüsselmanagement betreiben muss. Der PC selbst hat keinen Internetzugang, aber einen USB Zugang zum Anschließen von USB Sticks oder Festplatten.

Nun soll das aber auch mal jemand ohne mein Beisein machen. Ich suche noch nach einer adäquaten Lösung. Meine erste Idee ist zwar den SSH zugang zu belassen aber eine GUI zum Update zu schreiben, die das per SSH dort hochlädt und installiert.

Eine weitere Lösung könnte sein, dass man per HTTP oder FTP das deb Paket hochlädt und einen systemd Daemon am laufen hat, der immer das neuste Paket installiert.

Wie wird so etwas in der Regel "professionell" gelöst wenn Systeme durch Benutzer geupdatet werden sollen? Wie macht man das wenn dabei auch noch Systemupdates duchgeführt werden sollen oder mal ein neues Paket benötigt wird aber keine Internetverbindung da ist?

OP #7417955
Lesenswert?

(prx) A. K. schrieb:

Eigenen Repository-Server als Installationsquelle aufsetzen.

Das Ding hat keine Internetverbindung aber man kann APT Repositories auch in ein lokales Dateisystem zeigen lassen. Schwierig würde das nur wenn zum Beispiel mal eine neue Abhängigkeit meines Programms auf dem PC hinzukommt. Dann müsste man die mit ausliefern und da fällt mir keine Lösung ein wie das gehen soll, denn die Debian Pakete haben teils sehr verzweigte abhängigkeiten.

Beitrag #7417960 wurde von einem Moderator gelöscht.
#7417969
Lesenswert?

Gustav G. schrieb:

(prx) A. K. schrieb:

Eigenen Repository-Server als Installationsquelle aufsetzen.

Das Ding hat keine Internetverbindung aber man kann APT Repositories auch in ein lokales Dateisystem zeigen lassen.

Wahrscheinlich meint prx einen eigenen mobilen Repository-Server als Installationsquelle aufsetzen. Z.B. einen Mini-PC mit ausreichend Festspeicherkapazität, der dann regelmäßig mit dem Debian-Server synchronisiert wird. Von Zeit zu Zeit den an den zu aktualisierenden Rechner per LAN anschließen und "sudo apt update; sudo apt upgrade", um alle installierten Pakete zu aktualisieren. Die apt sources.list so konfigurieren, dass apt auf dem per LAN angeschlossenem Rechner sucht.

#7417974
Lesenswert?

Alexander S. schrieb:

Z.B. einen Mini-PC mit ausreichend Festspeicherkapazität, der dann regelmäßig mit dem Debian-Server synchronisiert wird.

Und das schafft auch ein RasPi, oder noch kleinerer Verwandter wie der Orange Pi Zero, wenn man das Debian-Repo selektiv fahren kann (keine Ahnung wie fein). Vorteil solcher Lösungen: Sie setzen auf dem normalen Update-Weg auf, benötigen keine Sonderlocken.

#7418393
Lesenswert?

Gustav G. schrieb:

Wie wird so etwas in der Regel "professionell" gelöst wenn Systeme durch Benutzer geupdatet werden sollen? Wie macht man das wenn dabei auch noch Systemupdates duchgeführt werden sollen oder mal ein neues Paket benötigt wird aber keine Internetverbindung da ist?

Gar nicht. ;-)

Im professionellen Umfeld lässt man so etwas niemals von Benutzern ausführen. Stattdessen automatisiert man das mit den üblichen Tools wie Ansible, Cfengine, Chef, Muppet, Salt-Stack …

Bei Ansible reicht dafür auch SSH als Zugang vollkommen aus, damit schiebt man zuerst das deb-File auf die remote-Kiste und löst danach die Installation aus.

Und was bedeutet "keine Internetverbindung" genau? Nur inbound-SSH möglich? Oder darf die Kiste sich mit dem Admin-System (von dem aus du das bisher mit SSH machst) evtl. auch verbinden? Wenn du da kanonisch den Port 3142 freigeben kannst, dann könntest du auf dem Admin-System apt-cacher-ng installieren und vom remote-System als apt-Proxy ansprechen lassen (BTDT). Das macht das Leben viel einfacher (und erlaubt nebenbei auch das übliche daily apt-upgrade für sicherheitsrelevante Updates via unattended-upgrades).

OP #7418693
Lesenswert?

Ansible ist eben auch nur ein SSH Zugang mit Skript. Vielleicht erkläre ich nochmal. Keines der Geräte hat Internetzugang. Weder der PC, der sich per SSH verbinden kann noch der SSH Server PC. Da ist lediglich eine Netzwerkschnitstelle dran mit fester IP Adresse. Es muss also alles wirklich offline passieren.

Ich bin schon am überlegen einfach einen Docker Container zu benutzen oder das per AppImage zu machen.

#7418917
Lesenswert?

Das Ding hat irgendeine Art von Netzwerk, sonst würde dein SSH Zugriff nicht funktionieren!

Irgendwo in diesen Privaten Netzwerk (Nicht Internet) solltest du ein eigenes Debian Repository aufsetzen. Diese Repository, machst du nun allen deinen Debian Kisten bekannt und wenn du ein Paket Updaten willst reicht es diese in das Zentralen Repository zu tun. Die Rechner ohne Internet aber mit lokalem Netzwerk bekommen dann Ihre Updates per apt update/apt upgrade.

btw, wenn du schon dabei bist, solltest du dir auch gleiche noch ein Mirror der Offiziellen Debian Repository, einrichten. Dann klappt das auch mit den neuen abhänigkeiten. Wie du denn Mirror aktuelle hältst, überlasse ich dir, aber auch ein System ohne Internet braucht Sicherheitsupdate (nicht nur von der Software, welche du bereitstellst)

Last but not least Profis verlassen sich nicht darauf, dass Ihre Benutzer selbst updaten! Sie haben eine Orchestrierung im Einsatz, welche jeden Rechner auf einen definierten Stand bringt.

Ich persönlich habe bei meinem System gerne einen PXE-Server laufen, der Debian mithilfe einer preseed Datei als Debian SSH Server installiert. Danach wird der Rechner je nach Rolle mit ein paar Ansible Skripten Grund konfiguriert.

Teil meiner Konfiguration ist es auch, mit Icinga zu überwachen, ob die Pakete aktuell sind (ich weiß, aptcron würde es auch machen). Weil meine Software über Debian Repositorys verteilt wird, ist ein System update mit apt update /apt upgrade in der Regel einfach gemacht. Ich benutze aber dennoch ein Ansible Playbook hierfür, da so gleich einen Überblick bekomme, wenn es auf ein paar Computer Probleme gab.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren