Ein Kunde von uns verwaltet alle SQL Server von einem zentralen Verwaltungsserver aus und möchte in Zukunft das PowerShell Modul dbatools nutzen. So weit, so gut. Das Problem dabei: Auf dem Verwaltungsserver besteht keine Internetanbindung. Es gibt einzig die Möglichkeit, auf einem anderen Rechner einen Browser zu starten und damit Dateien aus dem Internet zu laden und in einer Dateifreigabe abzulegen.
In diesem Artikel werde ich zeigen, welche Dateien benötigt werden und wie diese dann genutzt werden können, um dbatools in so einer Umgebung einrichten und auch regelmäßig aktualisieren zu können.
Installation von NuGet
Um die Installation und Aktualisierung von PowerShell Modulen mit Install-Module und Update-Module zu ermöglichen, haben wir ein lokales PowerShellGet Repository auf Basis einer Dateifreigabe eingerichtet. In dieser Dateifreigabe können dann die von der PowerShell Gallery manuell heruntergeladenen Pakete abgelegt und genutzt werden.
Zuvor muss der NuGet Provider aktualisiert werden, was bei an das Internet angeschlossenen Systemen auf Rückfrage automatisch durchgeführt wird. Aber auch ohne Internetanbindung ist das in wenigen Schritten erledigt. Denn es wird lediglich das Verzeichnis „C:\Program Files\PackageManagement\ProviderAssemblies\NuGet\2.8.5.208“ mit der Datei „Microsoft.PackageManagement.NuGetProvider.dll“ benötigt. Die Datei kann entweder von einem anderen System übertragen werden, auf dem NuGet mit dem Befehl Install-PackageProvider -Name NuGet eingerichtet wurde, oder alternativ von https://onegetcdn.azureedge.net/providers/Microsoft.PackageManagement.NuGetProvider-2.8.5.208.dll heruntergeladen und umbenannt werden.
Einrichtung des lokalen Repositories
Die offizielle PowerShell Gallery (https://www.powershellgallery.com/) nutzt den Namen PSGallery, daher haben wir uns für den Namen „MyPSGallery“ entschieden, Sie können aber natürlich auch einen anderen Namen wählen. Das Repository kann zwar auch in einem lokalen Verzeichnis eingerichtet werden, wir haben jedoch eine dafür geeignete Dateifreigabe genutzt. Die Einrichtung als vertrauenswürdige Quelle erfolgt dann mit:
$repoLocation = '\\fileserver\Software\MyPSGallery'
Register-PSRepository -Name MyPSGallery -SourceLocation $repoLocation -PublishLocation $repoLocation -InstallationPolicy Trusted
Dort wird dann das NuGet Paket von dbatools abgelegt, das über „Manual Download“ auf der Seite https://www.powershellgallery.com/packages/dbatools heruntergeladen werden kann. Wenn weitere Pakete benötigt werden, können diese ebenfalls auf diesem Wege heruntergeladen und bereitgestellt werden.
[Update 10.05.2023]: Seit der Version 2.0 bestehen die dbatools aus zwei Modulen, da alle Bibliotheken in das Modul dbatools.library ausgelagert wurden. Daher ist für diese Art der Installation auch die aktuelle Version dieses Moduls auf der Seite https://www.powershellgallery.com/packages/dbatools.library herunterzuladen und im gleichen Verzeichnis bereitzustellen. Der weitere Verlauf der Installation ändert sich jedoch nicht.
Installation und Aktualisierung von dbatools
Die Installation kann wie gewohnt erfolgen, es ist lediglich das Repository mit anzugeben:
Install-Module -Name dbatools -Repository MyPSGallery
Vor der Aktualisierung muss zunächst wieder das NuGet Paket manuell von der Webseite der PowerShell Gallery heruntergeladen und im eigenen Repository abgelegt werden. Dann erfolgt die Aktualisierung wieder wie gewohnt:
Update-Module -Name dbatools
Die Angabe des Repositories ist hier weder notwendig noch möglich, PowerShell kennt die Quelle jedes installierten Moduls und verwendet diese auch zur Aktualisierung.
Aktualisierung der Update-Referenztabelle
Soll mit dbatools zusätzlich überprüft werden, ob auf den SQL Server Instanzen das aktuelle Update installiert ist? Dann ist eine regelmäßige Aktualisierung der Referenztabelle mit Informationen über alle veröffentlichten Updates notwendig. Neue Updates werden von den dbatools Entwicklern zeitnah eingepflegt und unter dieser URL veröffentlicht: https://sqlcollaborative.github.io/assets/dbatools-buildref-index.json
Damit die Datei an die passende Stelle kopiert wird, steht der Befehl Update-DbaBuildReference zur Verfügung, der diese Datei normalerweise von der Webseite herunterlädt. Der Befehl hat jedoch vor Kurzem den neuen Parameter LocalFile bekommen, mit dem wir die per Browser heruntergeladene Datei verarbeiten können:
Update-DbaBuildReference -LocalFile '\\fileserver\Software\dbatools\dbatools-buildref-index.json'
Installation und Aktualisierung zusätzlicher Tools
Es gibt eine Reihe von freien Tools, die meiner Meinung nach auf keinem SQL Server fehlen sollten. Drei davon möchte ich hier erwähnen: Das First Responder Kit von Brent Ozar (https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit), die Maintenance Solution von Ola Hallengren (https://github.com/olahallengren/sql-server-maintenance-solution) und sp_WhoIsActive von Adam Machanic (https://github.com/amachanic/sp_whoisactive). Diese drei (und auch einige weitere Tools) haben gemeinsam, dass der Source Code auf GitHub verwaltet wird und es jeweils einen dbatools Befehl zur Installation gibt.
Schon in Umgebungen mit Internetanbindung ist zu beachten, dass die Befehle zur Installation nur beim ersten Aufruf oder bei der Nutzung des Parameters Force die aktuelle Version von GitHub herunterladen. Alle weiteren Aufrufe installieren aus dem lokalen Cache. Damit ist es eine Aufgabe des Administrators, diesen lokalen Cache aktuell zu halten, wenn er von neuen Versionen erfährt.
Da immer die gleichen Schritte auszuführen sind, gibt es den zentralen dbatools Befehl Save-DbaCommunitySoftware, der für den Download von GitHub und die Aktualisierung des lokalen Cache zuständig ist. Dieser Befehl hat ebenfalls einen Parameter LocalFile, um den lokalen Cache ohne Nutzung des Internet auf Basis einer lokalen Datei zu aktualisieren.
Beim First Responder Kit ist zu beachten, dass die Version von GitHub benötigt wird (ob als Release oder als Branch ist egal), da die über die Webseite von Brent Ozar verteilte Version eine andere Struktur hat. Bei der Maintenance Solution gibt es keine Releases. Dort laden Sie den master Branch als zip herunter.
Hier die Befehle zur Verarbeitung der Dateien:
Save-DbaCommunitySoftware -Software FirstResponderKit -LocalFile '\\fileserver\Software\dbatools\SQL-Server-First-Responder-Kit-20211106.zip'
Save-DbaCommunitySoftware -Software MaintenanceSolution -LocalFile '\\fileserver\Software\dbatools\sql-server-maintenance-solution-master.zip'
Save-DbaCommunitySoftware -Software WhoIsActive -LocalFile '\\fileserver\Software\dbatools\sp_whoisactive-12.00.zip'
Damit ist der lokale Cache aktualisiert, die Installation kann dann ohne Zugriff auf das Internet mit Install-DbaFirstResponderKit, Install-DbaMaintenanceSolution und Install-DbaWhoIsActive erfolgen.
Fazit
Die Einrichtung einer Infrastruktur zur Arbeit mit dbatools ist auch ohne Internetanbindung möglich. Es sind lediglich ein paar manuelle Schritte und natürlich irgendwo anders ein Rechner mit Internetanbindung notwendig. Benötigen Sie weitere Informationen? Soll dieser Prozess an Ihre Umgebung angepasst werden? Sprechen Sie uns an, wir helfen gerne.
Sie haben Interesse an einer Weiterbildung oder Fragen zum Thema? Sprechen Sie uns an oder besuchen Sie einen unserer Kurse aus unserem Seminarshop:
Zu unseren Seminaren