Automatische Softwareupdates auf cloudbasierten Windows-Servern
Hallo liebe IT-Kollegen und -Kolleginnen,
ich bin derzeit für meine Firma an einem Projekt dran, bei dem ich mich mal hier nach Erfahrungen und Tipps umhören wollte.
Es geht um Folgendes:
Meine Firma entwickelt eine Websoftware, die unter Windows Server läuft und als Peripherie Apache Tomcat, Java (OpenJDK) und Apache HTTPD (als Reverse Proxy) verwendet.
Teil unseres Angebots ist Hosting als SaaS. Dabei gibt es Server für einzelne Kunden, aber auch für mehrere Kunden die sich einen Server teilen. Diese Server sind teilweise in Azure Cloud, teilweise aber auch bei OVH und bei Hetzner Deutschland gehostet.
Problem ist, dass bei jedem Update (insbesondere Sicherheitsupdate) eines der Komponenten ein Mitarbeiter von uns auf alle Hostingserver manuell per Remotedesktop rauf und dort händisch Updates einspielen muss (mittlerweile über 40 Server). Das ist natürlich super aufwändig und ineffizient.
Ich soll daher dafür eine Lösung finden.
Mir schwebt Folgendes vor:
Eine Softwarelösung, die automatisch erkennt, wenn es ein Sicherheitsupdate gibt und dieses runterlädt. Anschließend soll es möglich sein Hooks zu definieren, die über PowerShell dann die Software deployen anhand eines Zeitplans (etwa einmal die Woche).
Das ist meines Erachtens notwendig, da wir nicht mit Installern arbeiten, sondern die Pakete als Zips normalerweise handhaben und dann in die notwendigen Pfade extrahieren. Dazu kommt, dass bei Updates von Tomcat etwa auch alle Tomcatdienste gestoppt werden müssen. Das alles soll über PowerShell dann von statten gehen. Fortgescheittene Skills im Schreiben komplexerer PowerShell-Skripte sind vorhanden. Allerdings möchte ich idealerweise nicht alles komplett händisch skripten müssen, sondern es mit einer richtigen bereits erhältlichen Softwarelösung kombinieren können. Meine Skills in C# sind wahrscheinlich nicht ausreichend, um da selbst was zu schreiben.
Es wäre kein Problem, wenn dazu auf jedem Server ein Agent installiert werden müsste, der das alles steuert.
Als weitere Anforderung gibt es, dass es möglich sein muss, parallel mehrere Versionen eine Produkts zu verwalten, da wir unseren Hostingkunden nicht immer die neueste Version aufzwingen, sondern das die Kunden selbst entscheiden können. Daher kann es etwa parallel Instanzen geben die mit Tomcat 9 und Java 8 laufen, aber auch welche, mit Tomcat 10 und Java 17.
Idealerweise ist die Lösung kostenlos oder zumindest nicht übertrieben teuer. Mehr als 1000 Dollar im Jahr werde ich fürchte ich bei uns intern nicht durch kriegen.
Ich habe schon ein Bisschen recherchiert. Es gibt natürlich in gewisser Hinsicht Lösungen, bei denen ich potentiell aber Probleme sehe, darunter:
Ich denke jedoch, dass mein Use Case jetzt nichts Unübliches ist für Softwarefirmen die SaaS anbieten, daher frage ich mich wie die (also Ihr, die bei solchen Firmen arbeiten) das lösen
Daher meine Frage:
Welche Vorgehensweise empfehlt Ihr für meinen Use Case? Ist meine Idee mit Skripten vielleicht sogar unnötig? Gibt es möglicherweise sogar eine Software, die Out-Of-The Box alles kann, was wir benötigen? Natürlich würde ich mich gegen Enterprisefunktionen, wie ein zentrales webbasiertes Dashboard zur Statusabfrage/Überwachtung etc nicht sträuben.
Für gute Tipps und Tricks bin ich sehr dankbar und freue mich auf eure Ideen.
Cheers!
Alex
ich bin derzeit für meine Firma an einem Projekt dran, bei dem ich mich mal hier nach Erfahrungen und Tipps umhören wollte.
Es geht um Folgendes:
Meine Firma entwickelt eine Websoftware, die unter Windows Server läuft und als Peripherie Apache Tomcat, Java (OpenJDK) und Apache HTTPD (als Reverse Proxy) verwendet.
Teil unseres Angebots ist Hosting als SaaS. Dabei gibt es Server für einzelne Kunden, aber auch für mehrere Kunden die sich einen Server teilen. Diese Server sind teilweise in Azure Cloud, teilweise aber auch bei OVH und bei Hetzner Deutschland gehostet.
Problem ist, dass bei jedem Update (insbesondere Sicherheitsupdate) eines der Komponenten ein Mitarbeiter von uns auf alle Hostingserver manuell per Remotedesktop rauf und dort händisch Updates einspielen muss (mittlerweile über 40 Server). Das ist natürlich super aufwändig und ineffizient.
Ich soll daher dafür eine Lösung finden.
Mir schwebt Folgendes vor:
Eine Softwarelösung, die automatisch erkennt, wenn es ein Sicherheitsupdate gibt und dieses runterlädt. Anschließend soll es möglich sein Hooks zu definieren, die über PowerShell dann die Software deployen anhand eines Zeitplans (etwa einmal die Woche).
Das ist meines Erachtens notwendig, da wir nicht mit Installern arbeiten, sondern die Pakete als Zips normalerweise handhaben und dann in die notwendigen Pfade extrahieren. Dazu kommt, dass bei Updates von Tomcat etwa auch alle Tomcatdienste gestoppt werden müssen. Das alles soll über PowerShell dann von statten gehen. Fortgescheittene Skills im Schreiben komplexerer PowerShell-Skripte sind vorhanden. Allerdings möchte ich idealerweise nicht alles komplett händisch skripten müssen, sondern es mit einer richtigen bereits erhältlichen Softwarelösung kombinieren können. Meine Skills in C# sind wahrscheinlich nicht ausreichend, um da selbst was zu schreiben.
Es wäre kein Problem, wenn dazu auf jedem Server ein Agent installiert werden müsste, der das alles steuert.
Als weitere Anforderung gibt es, dass es möglich sein muss, parallel mehrere Versionen eine Produkts zu verwalten, da wir unseren Hostingkunden nicht immer die neueste Version aufzwingen, sondern das die Kunden selbst entscheiden können. Daher kann es etwa parallel Instanzen geben die mit Tomcat 9 und Java 8 laufen, aber auch welche, mit Tomcat 10 und Java 17.
Idealerweise ist die Lösung kostenlos oder zumindest nicht übertrieben teuer. Mehr als 1000 Dollar im Jahr werde ich fürchte ich bei uns intern nicht durch kriegen.
Ich habe schon ein Bisschen recherchiert. Es gibt natürlich in gewisser Hinsicht Lösungen, bei denen ich potentiell aber Probleme sehe, darunter:
- Sehr hoher Preis
- Zu wenig Flexibilität - etwa keine Möglichkeit über Skripte zu definieren was wie wo wann weshalb.
- Unterstützt nur logisch verknüpfte Geräte = im selben LAN oder per VPN angebunden. Es ist jeoch nicht praktikabel in unserem Fall alle Cloudserver über VPN an unser Firmen-LAN anzustöpseln.
Ich denke jedoch, dass mein Use Case jetzt nichts Unübliches ist für Softwarefirmen die SaaS anbieten, daher frage ich mich wie die (also Ihr, die bei solchen Firmen arbeiten) das lösen
Daher meine Frage:
Welche Vorgehensweise empfehlt Ihr für meinen Use Case? Ist meine Idee mit Skripten vielleicht sogar unnötig? Gibt es möglicherweise sogar eine Software, die Out-Of-The Box alles kann, was wir benötigen? Natürlich würde ich mich gegen Enterprisefunktionen, wie ein zentrales webbasiertes Dashboard zur Statusabfrage/Überwachtung etc nicht sträuben.
Für gute Tipps und Tricks bin ich sehr dankbar und freue mich auf eure Ideen.
Cheers!
Alex
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 73224913443
Url: https://administrator.de/contentid/73224913443
Ausgedruckt am: 24.11.2024 um 03:11 Uhr
15 Kommentare
Neuester Kommentar
Hallo,
wenn Ihr was selber bauen wollt habe ich diese Vorschläge.
Mit ABC Update (https://abc-deploy.com/ABC-Update/WhyFree) kann man über die Kommandozeile alles an Windows-Updates installieren.
Es gibt für die Windows-Updates prima PS-Schnittstellen um diesen Vorgang genau steuern zu können.
Bei diesen beiden Varianten hat man mehr Kontrolle was passiert.
Aber auch mehr Arbeit als Ansible oder das Patch-Management eines RMM-Tools wie N-Able.
Stefan
wenn Ihr was selber bauen wollt habe ich diese Vorschläge.
Mit ABC Update (https://abc-deploy.com/ABC-Update/WhyFree) kann man über die Kommandozeile alles an Windows-Updates installieren.
Es gibt für die Windows-Updates prima PS-Schnittstellen um diesen Vorgang genau steuern zu können.
Bei diesen beiden Varianten hat man mehr Kontrolle was passiert.
Aber auch mehr Arbeit als Ansible oder das Patch-Management eines RMM-Tools wie N-Able.
Stefan
Zitat von @AlexPlunet:
Daher meine Frage:
Welche Vorgehensweise empfehlt Ihr für meinen Use Case? Ist meine Idee mit Skripten vielleicht sogar unnötig? Gibt es möglicherweise sogar eine Software, die Out-Of-The Box alles kann, was wir benötigen? Natürlich würde ich mich gegen Enterprisefunktionen, wie ein zentrales webbasiertes Dashboard zur Statusabfrage/Überwachtung etc nicht sträuben.
Daher meine Frage:
Welche Vorgehensweise empfehlt Ihr für meinen Use Case? Ist meine Idee mit Skripten vielleicht sogar unnötig? Gibt es möglicherweise sogar eine Software, die Out-Of-The Box alles kann, was wir benötigen? Natürlich würde ich mich gegen Enterprisefunktionen, wie ein zentrales webbasiertes Dashboard zur Statusabfrage/Überwachtung etc nicht sträuben.
Moin,
Du kannst dir mal Azure Arc in Kombination mit Azure Update Manager und Azure Automation anschauen, bei der Lösung ist es auch relativ egal wo die Server gehosted sind.
/Thomas
Nein, ABC ist nur Windows-Updates.
Für App-Updates nutzte ich https://chocolatey.org/, https://ninite.com/ und das Patchmanamgent des RMM N-Able.
Stefan
Für App-Updates nutzte ich https://chocolatey.org/, https://ninite.com/ und das Patchmanamgent des RMM N-Able.
Stefan
Im Prinzip schon.
Im Windows-Bereich wäre ich nicht mutig genug eine Paravirtualisierung einzusetzen.
Ich würde aber auch nicht Windows als Basis für ein Hosting-Produkt verwenden
Tomcat, Java und Apache fühlen sich unter Linux viel wohler...
Ich vermute es gibt eine Software-Komponente gibt die nur unter Windows läuft. Oder der Admin kennt sich mit Windows halt besser aus. Beides Fair.
Stefan
Im Windows-Bereich wäre ich nicht mutig genug eine Paravirtualisierung einzusetzen.
Ich würde aber auch nicht Windows als Basis für ein Hosting-Produkt verwenden
Tomcat, Java und Apache fühlen sich unter Linux viel wohler...
Ich vermute es gibt eine Software-Komponente gibt die nur unter Windows läuft. Oder der Admin kennt sich mit Windows halt besser aus. Beides Fair.
Stefan
Zitat von @AlexPlunet:
Beides Unser Team ist nur für Windows ausgebildet. Und ein paar wenige Schnittstellen von uns sind .NET-basiert und die angebundenen Tools sind C# Anwendungen die nur unter Windows laufen. Dennoch prüfen wir derzeit, ob wir eine Corelösung ohne diese betreffenden Schnittstellen auch unter Linux betreiben könnten. Würde sich ja zweifellos für Serverlösungen anbieten. Ich persönlich hasse aber auch Bash. PowerShell (for Linux) wäre mir lieber, wenn's denn eine Kommandozeile sein soll. Und am allerliebsten eine Klickibuntioberfläche
Beides Unser Team ist nur für Windows ausgebildet. Und ein paar wenige Schnittstellen von uns sind .NET-basiert und die angebundenen Tools sind C# Anwendungen die nur unter Windows laufen. Dennoch prüfen wir derzeit, ob wir eine Corelösung ohne diese betreffenden Schnittstellen auch unter Linux betreiben könnten. Würde sich ja zweifellos für Serverlösungen anbieten. Ich persönlich hasse aber auch Bash. PowerShell (for Linux) wäre mir lieber, wenn's denn eine Kommandozeile sein soll. Und am allerliebsten eine Klickibuntioberfläche
Das ist ja keine Schande
Windows, Linux, Mac & Co sind Softwaren die man nutz um Probleme zu lösen.
Aber ein Ansatz wie ich etwas vergleichbares bei einem HTML zu PDF-Konverter mal realisiert habe.
Der kommerzielle Konverter lief nur unter Windows und war viel besser als alles andere. Also Windows.
Aber auf dem Windows-Server lief nur ein Web-API-Server mit Apache und PHP.
Das ist der Backend-Server. Der hat nur Anfragen von einem Front-End-Server entgegen genommen.
Dabei warun nur bestimmte Parameter mit bestimmten Werten erlaubt.
Davor lief als Front-End-Server ein klassischer LAMP-Server (Linux, Apache, Mysql, PHP).
Hier lief die Webanwendung und hat Anfragen an die Software an den BE geschickt.
Dabei werden die Anfragen im FE generiert und nicht vom Anwender 1:1 durchgereicht.
Damit was das patchen des BE-Servers keine kritische Komponente mehr und man hatte einen gehärteten Linux-Server im Web.
Stefan