DSC in der Praxis – Anwendungen installieren über die Ressourcen Package und WindowsProcess

DSC lässt sich für viele Konfigurationsaufgaben einsetzen, z. B. auch für die Installation von Anwendungen. Warum nicht? Die Idee ist, dass man eine Liste von Exe- und Msi-Dateien zusammen mit Argumenten zusammenstellt, die auf einer Reihe von Nodes installiert werden sollen. Man schießt die DSC-Konfiguration per Start-DSCConfiguration ab („Make it so“), DSC verteilt diese auf die einzelnen Nodes und der LCM auf jedem Node arbeitet die Liste ab und installiert jede Anwendung durch Ausführen der Exe-Datei. Hört sich in der Theorie einfach an, die Umsetzung in der Praxis ist auch nicht allzu kompliziert, sieht man von den üblichen Stolpersteinen ab.

Einen guten Überblick für den Einstieg gibt ein Artikel vom PowerShell-Experte Adam Betram: https://4sysops.com/archives/installing-software-with-powershell-dsc. Er beschreibt, wie sich per DSC und der Package Ressource eine Anwendung (7-Zip) installieren lässt. In seinem Beispiel befindet sich die Msi-Datei aber in einem lokalen Verzeichnis. Die Frage ist, wie kommt sie dort hin? Entweder durch Kopieren aus einer Freigabe, die z.B. für ein Azure Storage-Blob angelegt wurde. In diesem Fall kommt aber die Berechtigungsproblematik ins Spiel und das Kennwort muss per Zertfikat verschlüsselt werden. Einfacher und unkomplizierter geht es per direkten Download der Datei. Da es dafür aber offenbar keine Ressource gibt, habe ich solche selber gebastelt.

Meine Lösung soll insgesamt etwas flexibler sein, in dem mehrere Apps installiert werden, deren Namen in den externen Konfigurationsdaten abgelegt sind. Außerdem sollen sich die Exe-Dateien in der Cloud befinden, z. B. in einem Azure Storage Account.

Das folgende Listing zeigt die gesamte DSC-Konfiguration, allerdings ohne die Konfigurationsdaten.

Die Konfigurationsdaten habe ich in einer separaten Psd1-Datei untergebracht.

Ausgeführt wird die Konfiguration per Start-DSCConfiguration:

Ich habe mich in dem Beispiel auf Exe-Installationsprogramme beschränkt, damit es übersichtlich bleibt. Für Msi-Pakete ist die Package-Ressource die etwas bessere Wahl.

Den Download der Exe-Dateien aus meinem Azure Storage-Blob übernimmt eine DSC-Ressource, die ich dafür geschrieben habe. Sie besteht aus zwei Dateien:

>xDownloadFileResource.psd1
>xDownloadFileResource.psm1

Die Psd1-Datei ist wie folgt aufgebaut:

Die Logik der Ressource ist in der Psm1-Datei enthalten:

Leg unter C:\Program Files\WindowsPowerShell\Modules ein Verzeichnis „xDownloadFileResource“ und darin ein Unterverzeichnis „1.0“ an und leg die Psd1- und die Psm1-Datei in diesem Verzeichnis ab.

Schreibe einen Kommentar

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