alexplunet
Goto Top

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:
  • 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 face-smile

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

Content-ID: 73224913443

Url: https://administrator.de/contentid/73224913443

Ausgedruckt am: 24.11.2024 um 03:11 Uhr

Epixc0re
Epixc0re 07.06.2024 um 19:19:14 Uhr
Goto Top
Hallo,

schau dir mal ansible an, damit managen wir mehrere tausend Server. Gibt auch eine Web gui für die Windows Knechte.

LG
tech-flare
tech-flare 07.06.2024 um 20:38:36 Uhr
Goto Top
+1 für Ansbile.

Anbindung bei Windows geht über SSH und WinRM
StefanKittel
StefanKittel 07.06.2024 um 22:45:29 Uhr
Goto Top
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
wiesi200
wiesi200 08.06.2024 um 11:25:31 Uhr
Goto Top
Hallo,

ich mag mich ja irren aber gibt es nicht genau dafür Container Virtualisierung?
Th0mKa
Th0mKa 08.06.2024 um 20:15:50 Uhr
Goto Top
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.

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
AlexPlunet
AlexPlunet 10.06.2024 um 10:54:08 Uhr
Goto Top
Zitat von @wiesi200:

Hallo,

ich mag mich ja irren aber gibt es nicht genau dafür Container Virtualisierung?

Ja da hast du recht. Leider sind wir noch nicht so weit. Etwas Richtung Docker Container wäre die bessere Alternative. Idealerweise dann aber so, dass sie sich alle eine Datenbankinstanz teilen können.
Wir haben erst seit einigen Jahren einen dedizierten Softwarearchitekten, der diese ganzen Themen nach und nach angeht. Da unsere Software schon seit über 20 Jahren auf dem Markt ist, sind viele Altlasten vorhanden, die wir zunächst beseitigen müssen, damit wir kein "Altsystem" virtualisieren, sondern eine moderne saubere Lösung.
AlexPlunet
AlexPlunet 10.06.2024 um 10:56:37 Uhr
Goto Top
Zitat von @StefanKittel:

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

Hallo Stefan,

danke für deine Antwort. Ich habe mal in das PDF auf der Webseite rein geschaut. Es klingt aber so, als wäre das eher zur Steuerung von WSUS - will heißen Windowsupdates. Ich möchte ja Drittanbietersoftware unter Windows updaten.
Geht das damit auch?
StefanKittel
StefanKittel 10.06.2024 um 10:58:13 Uhr
Goto Top
Zitat von @AlexPlunet:
Geht das damit auch?
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
StefanKittel
StefanKittel 10.06.2024 um 11:00:51 Uhr
Goto Top
Zitat von @wiesi200:
ich mag mich ja irren aber gibt es nicht genau dafür Container Virtualisierung?
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 face-smile
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
AlexPlunet
AlexPlunet 10.06.2024 um 11:01:23 Uhr
Goto Top
Zitat von @Epixc0re:

Hallo,

schau dir mal ansible an, damit managen wir mehrere tausend Server. Gibt auch eine Web gui für die Windows Knechte.

LG

Danke dir. Ich schaue da mal rein. Leider kann ich gar kein Python und sträube mich auch gegen diese Sprache face-smile Aber das Tool selbst sieht mächtig aus und ein Kollege von mir ist auch ein ziemlicher Pythonfan, vielleicht kann ich den da mit ins Boot holen.
AlexPlunet
AlexPlunet 10.06.2024 um 11:04:17 Uhr
Goto Top
Zitat von @StefanKittel:

Zitat von @wiesi200:
ich mag mich ja irren aber gibt es nicht genau dafür Container Virtualisierung?
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 face-smile
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

Hi Stefan,
Beides face-smile 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 face-smile
AlexPlunet
AlexPlunet 10.06.2024 um 11:04:42 Uhr
Goto Top
Zitat von @StefanKittel:

Zitat von @AlexPlunet:
Geht das damit auch?
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

Merci, ich schaue in die Produkte rein, die du verlinkt hast.

Cheers!

Alex
StefanKittel
StefanKittel 10.06.2024 um 11:18:19 Uhr
Goto Top
Zitat von @AlexPlunet:
Beides face-smile 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 face-smile

Das ist ja keine Schande face-smile
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
AlexPlunet
AlexPlunet 12.06.2024 um 11:11:19 Uhr
Goto Top
Hallo Stefan,

bei uns wird man gesteinigt, wenn man PHP propagiert - auch wenn ich persönlich ein Fan von PHP bin.
Unsere Anwendung nutzt serverseitig Java und clientseitig bisher JSP, wird aber derzeit auf Angular umgestellt.

Ich denke wir werden irgendwann Linux unterstützen müssen. Gerade kleinere Kunden weinen wegen der hohen Lizenzkosten für Windows Server - zurecht meiner Meinung nach.
Ich schaue mir Chocolatey mal näher an. Allerdings komme ich nach und nach zu dem Eindruck, dass das möglicherweise alles overkill ist und ich viel zu überdimensioniert gedacht habe und ich mit ein paar wenigen schlanken PowerShellskripten, einem kleinen Webspace/FTP für meine Updatepakete und einem selbst gehosteten nuget Server schon gut dabei bin.
StefanKittel
StefanKittel 12.06.2024 aktualisiert um 11:19:49 Uhr
Goto Top
choco outdated
und
choco upgrade all