Desired State Configuration – Einfache SQL Server Administration mit DSC

Photo by Alex on Unsplash

Ich hatte mich vor etwa zwei Jahren erstmalig mit DSC auseinandergestzt, um für den SQLSaturday #605 eine Demo zu zaubern, die die Konfiguragtion des SQL Servers ständig überwacht und gffs korrigiert. Jetzt habe ich wieder ein sehr schönes Kundenprojekt, bei dem ich die Wahl habe zwischen kompletter Umsetzung in Powershell (via dbatools) oder eben ein wenig DSC in Verbindung mit dbatools.

Aufgabenstellung

Auf „Knopfdruck“ sollen zwei neue SQL Server installiert und konfiguriert werden, auf denen dann mehrere Datenbanken in Basic Availibility Groups laufen. Hierzu habe ich mir also meine Azure-Test-Umgebung erweitert und möchte euch nun meinen Weg zur einer funktionierenden SQL Server Umgebung darstellen.

Folgenden Themen werde ich in den nächsten Wochen entsprechend beleuchten:

  • Vorbereitung der Server
  • Installation des SQL Servers
  • Konfiguration des SQL Servers
  • Backup/Restore Automatisierung
  • Erstellung der BAGs aus den Backups
  • Aktivierung und Abschluss der neuen Server

Voraussetzungen für DSC schaffen

Ich gehe von folgender Ausgangslage aus:

Die neuen Server sind bis Oberkante Betriebssystem installiert und konfiguriert, hängen in einer Domäne und habe das aktuelle Windows Management Framework installiert, idealerweise ist auch bereits Windows Remote Management (WinRM) installiert und aktiviert… wenn nicht überprüfen wir das und holen dies ggfs nach.

Anfänglich wollte ich auch den Server noch mit Powershell in die Domäne hängen, hätte mich aber dabei ein wenig im Kreis gedreht ohne zu einer zufriedenstellenden Lösung zu kommen… daher hier nur ein Versuch mittles Screenshot… 😉

Versuch einen Server in die Domäne zu bringen

Ok, also weiter… wie bekomme ich also auf allen Zielservern WinRM automatisch ausgerollt und konfiguriert, sowie alle dazugehörigen Firewall-Ports geöffnet… Google half mir etwas bei der Ideenfindung, aber meine Gedanken liefen auch so schon in die richtige Richtung => Domänen-Gruppen-Richtlinien (aka Group-Policies).

Dazu also in der GruppenRichtlinienVerwaltung der Domäne eine Gruppenrichtlinie erstellen, damit man auch eine ordentliche und nachvollziehbare Struktur aufbauen kann.

1.) Service einrichten

Neuen Service hinzufügen und entsprechend konfigurieren

Computer Configuration > Preferences > Control Panel Settings > Services

DSC - GPO - gpedit - WinRM Service

2.) Zugriff auf Window Remote Shell erlauben

Zumindest dem Service den Zugriff erlauben, falls das nicht ausreichend sein sollte, auch noch der RemoteShell den Zugriff erlauben.

Computer Configuration > Policies > Administrative Templates > Windows Components > Windows Remote Management (WinRM) > WinRM Services

DSC - GPO - gpedit - WinRM Service
DSC - GPO - gpedit - Windows Remote Shell

Nun zu den Löchern in der Firewall

3.) Firewall öffnen für winRM

Letzte Konfiguration, damit alle Server in der Domäne mittles dieser Gruppenrichtlinie konfiguriert werden, um später in der Lage zu sein über DSC (Desired State Configuration) einen SQL Server zu installieren.

Computer Configurations > Policies > Windows Settings > Security Settings > Windows Firewall and Advanced Security > Windows Firewall and Advanced Security 

Nun eine neue Inbound-Rule erstellen, damit auch Zugriffe von aussen (hier vom DomainController auf die SQL Server) ermöglicht werden.

Diese Regel wird explizit für das Windows Remote Management erstellt, um damit alle Verbindungen innerhalb der Private und Domain-Netzwerkes zu erlauben, das Public-Netzwerk wird sicherheitshalber nicht berücksichtigt.

DSC - GPO - gpedit - WinRM Service Firewall Regeln erstellen

Nun kann man diese neue Gruppen-Richtlinie auf alle Server ausrollen und sollte danach in der Lage sein, alle Server mittels DSC zu konfigurieren und administrieren.

4.) Gruppen-Richtlinien aktualisieren

Den neuen Server nun in die Domäne bringen und somit sollte der Server eigentlich die neu erstellten Richtlinien automatisch erhalten. Um aber absolut sicherzustellen, dass dem so ist kann man auch die Gruppen-Richtlinien auf dem Server selber manuell einmal aktualisieren.

Nun sollte der Konfigurator des Server mit DSC nichts mehr im Wege stehen und man kann auf dem zentralen Administrations-Server die entsprechenden Regel erstellen und ausrollen. Dazu aber mehr im nächsten Blogbeitrag 😉

Quelle: How to Enable WinRM via Group Policy

Update der Gruppen-Richtlinien aufgrund von Fehlern in der Skript-Ausführung

Nachdem ich den ersten Beitrag fertig hatte und für weitere Beiträge sowie das Kunden-Projekt recherchiert und getestet habe, musste ich leider feststellen, dass ich im späteren Verlauf des Skriptes darauf angewiesen bin mittels WMI bestimmte Werte wie RAM und CPU zu ermitteln. Dies geht nur, wenn ich eine Verbindung vom zentralen Management-Server aus zum Zielserver aufbauen kann. Hierzu fehlte leider eine Regel in der Firewall der Server, die eine eingehende und ausgehende Kommunikation mit dem RPC-Server/-Service zulässt. Also musste ich noch eine weitere Anpassung an der Gruppen-Richtlinie vornehmen.

GruppenRichtlinien WMI Inbound
GruppenRichtlinien WMI Outbound

2 thoughts on “Desired State Configuration – Einfache SQL Server Administration mit DSC

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.