5 Minuten Lesezeit (908 Worte)

Installation und Nutzung von dbatools auf einem Rechner ohne Internetanbindung

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.

Zur englischen Version

Principal Consultant bei ORDIX

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Freitag, 26. April 2024

Sicherheitscode (Captcha)

×
Informiert bleiben!

Bei Updates im Blog, informieren wir per E-Mail.

Weitere Artikel in der Kategorie