PowerShell 5: Ein lokales Modul-Repository mit ProGet einrichten

Die kommende PowerShell 5 ist für mich mehr als nur ein weiteres Update mit interessanten, aber doch für den Adminalltag viel zu speziellen Neuerungen. Es ist für mich aus verschiedenen Gründen (mehr dazu in einem anderen Post) das wichtigste Update seit der Version 2.0 mit teilweise richtungsweisenden Neuerungen. Eine dieser Neuerungen ist die Modulverwwaltung. Wer einmal

eingibt und dabei die DSC-Ressourcen ausklammert, erhält eindrucksvoll ein Gefühl für die reichhaltige Auswahl an Modulen, die alleine in der von Microsoft initiierten PowerShell Gallery zur Verfügung stehen. Bei mir sind es aktuell 123 Module.

Doch da Komfort immer auf Kosten der Sicherheit geht, hat diese neue Leichtigkeit auch ihren Preis. Viele Administratoren werden ein Problem mit dem Umstand haben, dass ein Install-Module Programmcode aus einer grundsätzlich nicht sicheren Quelle lädt und auf dem lokalen Computer, in der Regel mit Administratorberechtigungen, ausführt.

Doch das bedeutet natürlich nicht, dass man auf eine Paketverwaltung verzichten muss. Die naheliegende Lösung besteht darin, eine Paketverwaltung im Firmennetzwerk einzurichten, in der nur getestete Pakete bereitgestellt werden. In diesem Fall erhält man den Komfort, ohne dass das Internet eine Rolle spielt. Der Aufwand für das Zusammenstellen und Pflegen der Pakete darf zwar nicht unterschätzt werden, doch auch Sicherheit hat bekanntlich ihren Preis. Auch wenn es grundsätzlich mit vertretbarem Aufwand möglich ist, einen lokalen Nuget-Paketmanager einzurichten, sehr viel einfacher geht es mit Hilfe von ProGet. ProGet ist eine kommerzielle Software der Firma Inedo, die es dankenswerterweise aber auch in einer kostenlosen „Free Edition“ gibt:

http://inedo.com/proget/download

Nach dem Ausführen des Installers und der Wahl der „Free Edition“ müssen ein paar allgemeine Angaben gemacht werden.

ProGet-Installation

ProGet-Installation

Unter anderem wird eine SQL Server Express-Datenbank angelegt. Als Webserver stehen der IIS, sofern installiert, oder ein Webserver zur Auswahl, der Teil von ProGet ist. Als Port ist 81 voreinstellt. ProGet läuft als Dienst, daher muss ein Systemkonto ausgewählt werden. Sind alle Angaben gemacht, läuft die Installation durch und ist, je nachdem, ob der SQL Server Express (aus Platzgründen verwendet ProGet noch die „Uralt-Version“ 2005) nachinstalliert werden muss, in ein paar Minuten erledigt. Anschließend ist das Repository einsatzbereit. Es wird über eine einfache, aber vollkommen ausreichende Weboberfläche administrieren.

ProGet - die Weboberfläche

ProGet – die Weboberfläche

Für den Benutzernamen und Kennwort für das Webverwaltungstool sind „Admin:Admin“ eingestellt.

Die Pakete werden über Feeds zur Verfügung gestellt. Von Anfang an gibt es den Feed „Default“, der bereits eine Reihe von Paketen umfasst, die aber nur für Entwickler interessant sind. Ich habe mir einen weiteren Feed mit dem Namen „PSModules“ angelegt.

Der folgende Befehl registriert das neue Repository:

Im nächsten Schritt wird per Publish-Module ein beliebiges Modul in das neue Repository veröffentlicht:

Für den Parameter NugetApiKey wird entweder jener API-Key eingetragen, der im Rahmen der Weboberfläche für den Feed eingetragen wurde (in diesem Fall muss der Benutzer „Anonymous“ als Berechtigungsstufe „Developer“ erhalten, damit ein nicht authentifizierter Benutzer Module veröffentlichen kann), oder es wird „Admin:Admin“ übergeben, was der voreingestellten Kombination aus Benutzername und Kennwort entspricht.

Damit befindet sich das Modul im Repository und kann über Find-Module lokalisiert und per Install-Module auf anderen Computern „installiert“ werden:

Weitere Angaben sind nicht erforderlich. Voraussetzung ist natürlich, dass das Repository auf dem Computer zuvor per Register-PSRespository registriert wurde. Eine kleine Einschränkung ist aktuell, dass Install-Module automatisch das Programmeverzeichnis verwendet (es gibt offenbar keinen Parameter, über den dies geändert werden könnte) und daher der Befehl nur in einer Admin-Shell ausgeführt werden kann. Bemerkenswert ist auch, dass auch ein lokales Repository als „untrusted“ eingestuft wird. Wahrscheinlich muss eine Https-Adresse verwendet werden.

ProGet - Das Modul PSServer wurde veröffentlicht

ProGet – Das Modul PSServer wurde veröffentlicht

Insgesamt ist ProGet eine tolle Sache, da es mit seiner Hilfe einfacher nicht sein könnte im Firmenetzwerk ein Repository für PowerShell-Module einzurichten. Natürlich kommt man auch ohne ProGet zum Ziel, sollte dann aber einen Tag einplanen und erhält keine Weboberfläche, in der auch ein Modul angelegt werden kann. Die kommerzielle Variante kostet lautet Webseite 595 US$ pro Jahr (alle Preisangaben ohne Gewähr) und bietet u.a. die Möglichkeit, das Repository auf mehrere Webserver zu verteilen. Das dürfte aber nur für eine echte Paketverwaltung interessant sein, geht es lediglich um ein „paar“ PowerShell-Module ist die Free Edition vollkommen ausreichend.

Schreibe einen Kommentar

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