Mit dem heutigen Blog möchte ich euch das Powershell Deployment Toolkit vorstellen. Das Tool wurde von Rob Willis und seinem Team bei Microsoft entwickelt.
Ein Großteil der Arbeitszeit von Administratoren und Consultants, die sich mit System Center Komponenten beschäftigen, wird für die Installation und Konfiguration der benötigten Systeme aufgebracht.
Eine Konfiguration, testweise oder produktiv, kann nicht auf einer einzelnen Maschine dargestellt werden – der Test von komplexen Administrationsvorgängen mit Anwendungen wie dem SCCM (System Center Configuration Manager) erfordert eine entsprechende Labor Umgebung. Die manuelle Einrichtung einer solchen Umgebung mit virtuellen Servern samt Betriebssystem, AD Domänen, SQL Servern und den System Center Komponenten verschlingt eine Menge Zeit. Mit dem PDT Tool gehört diese Zeitverschwendung jedoch der Vergangenheit an!
Herzstück des PDT ist – wie der Name schon sagt – Powershell.
Das Prinzip des PDT Tools lässt sich anhand folgender Abbildung vereinfacht darstellen:
Zuerst wird die Downloader.ps1 gestartet. Eine Vielzahl der erforderlichen Scripte und Sourcen für die Installation werden heruntergeladen. Als weiteren Output bekommt man geliefert, welche Komponenten noch manuell heruntergeladen und in der Verzeichnisstruktur abgelegt werden müssen.
Das Repository für alle Dateien, Komponenten und Scripte ist in unserem Fall 93,60 GB groß! Es beinhaltet alle Sourcen für eine komplette System Center 2012 R2 Umgebung mit SCCM, SCVM, SCOM, usw. und beinhaltet die notwendigen VHDX-Vorlagen für Windows Server 2008 R2, Windows Server 2012 R2 und Windows 10.
Nachdem alle erforderlichen Komponenten zur Verfügung stehen, können in der Variable.xml alle für das Deployment notwendigen Werte festgelegt werden. Diese werden dann im späteren Verlauf durch die VMCreator.ps1 ausgelesen. Die Datei untergliedert sich übersichtlich in fünf Bereiche:
Nachfolgend abgebildet ist unsere Variable.xml, welche für eine komplette System Center Installation samt Azure Pack und Demo-Clients angepasst wurde. Das gesamte Deployment mit seinen 23 virtuellen Maschinen läuft auf unserem MacPro mit 12 Kernen, 2,7 GHz CPU, 64GB RAM und einem SSD Raid 10 in ungefähr 2 Stunden komplett durch.
Wie der Deployment Prozess aussieht wird auch sehr schön in diesem kurzen Video des „Building Clouds“ Blog dargestellt.
https://www.youtube.com/watch?v=Es2RPl-BYtk
Zunächst haben wir aus den .iso Dateien für die Operating System Installation .vhdx Dateien erstellt. Auf Basis dieser werden während des Deployment Prozesses virtuelle Maschinen mit Differential Disks erstellen. Hierzu wurde folgendes Powershell Script verwendet:
Die Source, Download und Temp Ordner der Variable.xml verweisen by default auf “$SystemDrive\Temp”. Nach einer Änderung der Pfade auf andere Partitionen sind wir auf diverse Fehler gestoßen. Die Logik der VMCreator.ps1 ist darauf ausgelegt die gesamten Installationsquellen auf der Systempartition abzulegen, Änderungen an den diesen Pfaden sind nicht zu empfehlen!
Die eingebundene Version des Windows ADK 8.1 wurde für Windows 8.1 / Windows Server 2012 entwickelt. Wir haben einige Anpassungen vorgenommen um es auch für Windows 10 / Windows Server 2012 R2 verwenden zu können. Hierbei war es notwendig die folgenden Werte zu ändern:
Für jede Installation müssen auch zusätzlich noch der InstallName, Value und Executable angepasst werden.
Um den korrekten Wert für Value zu erhalten muss das ADK auf einem System installiert werden und die Registry nach dem entsprechenden Wert für den InstallName durchsucht werden. Einen anderen Weg um den Wert zu ermitteln gibt es leider nicht.
Das ADK 10 wird für die aktuelle SCCM 2012 R2 Build 1511 Version als Prerequisite benötigt. SCCM 2012 SP1 läuft mit ADK 8.1, daher empfiehlt es sich beide Versionen zu behalten. Erforderlich wird die Version 8.1 als Prerequisite für die SCVMM Installation. Diese scheitert sonst an der fehlenden 8.1 Version.
Die Original-Version des PDT enthält die Windows Deployment Services der Version 8.1. Für unsere Änderungen haben wir noch die Version 10 hinzugefügt, da diese Voraussetzung für SCCM 1511 ist. Wie bei dem ADK Toolkit ist es auch hier notwendig beide Versionen zu behalten.
Die Änderungen dieser Werte mussten auch in den entsprechenden Bereichen für die folgenden Komponenten angepasst werden:
Für die Installation des System Center 2012 R2 Configuration Manager Build 1511 musste der Wert für den ProductCode auf die aktuellste Version angepasst werden.
Zur Vermeidung händischer Anpassungen als Vorbereitung für die Installation des SCCM, haben wir das Domain Schema sowie den System Center Management Container per Script erstellt und angepasst. Es handelt sich hierbei um grundlegende Konfigurationen, die wir direkt in der Workflow.xml als eigene Installables hinzugefügt haben.
Die extadsch.exe Datei kann direkt in dem SCCM Quellverzeichnis gefunden werden. Mit robocopy kopieren wir die Datei aus der SCCM Installationsquelle auf die lokale Festplatte und starten Sie mit einem zusätzlichen PowerShell-Befehl.
Um den System Center 2012 R2 Configuration Manager erfolgreich zu installieren, muss ein Domain Container System Management zur Verfügung stehen. Hierfür kopieren wir die von uns erstellte CreateContainer.ps1 Datei auf die lokale Festplatte des SCCM Servers. Die Ausführung des Scipts bewirkt, dass ein entsprechender Container im AD erstellt wird und die Berechtigungen für den SCCM Maschine Account richtig gesetzt werden.
Ein weiterer Punkt, dem es Beachtung zu schenken gilt ist das Betriebssystem des Hosts. An den unten markierten Stellen in der VMCreator.ps1 ist die entsprechende Bildnummer an zwei Stellen anzupassen. In unserem Falle handelt es sich um ein Windows Server 2012 R2 System auf aktuellstem Stand.
Und…
Für einen aktuellen Windows 10 Client lautet die Buildnummer 10.0.10586
Soll das PDT Tool auf einem aktuellen Build ausgeführt werden, sind vorher die genauen Buildnummern vom gewünschten Host auszulesen. Am einfachsten geht das mit folgendem Powershell Befehl:
[System.Environment]::OSVersion.Version
Während unseres Testdeployments kam es zu dem Problem, dass in der System Center 2012 R2 Configuration Manager Admin Group keine Admin Berechtigungen gesetzt wurden. Das Problem konnte gelöst werden indem eine 5 sekündige Pause in das Workflow.xml Script eingepflegt wurde.
Eine tolle Anleitung zur Handhabung des PDT liefert Powershell MVP Stephane van Gulick in seinem Blog.
https://powershelldistrict.com/powershell-deployment-toolkit/
Auch Johansen Reidar hat in seinem Blog eine schöne Step by Step- Anleitung für ein SCCM Deployment erstellt.
https://johansenreidar.blogspot.de/2013/08/system-center-deployment-with-pdt-25.html
Wer auf den Geschmack gekommen ist und tiefer in das Thema eintauchen möchte kann sich die Präsentation des PDT auf der TechED 2013 von Rob Willis anschauen. Hier wird der Deployment Prozess sehr anschaulich und unterhaltsam erklärt.
https://www.youtube.com/watch?v=PfpPjMpgFjA
Das PDT kann im Technet unter folgendem Link geladen werden:
https://gallery.technet.microsoft.com/PowerShell-Deployment-f20bb605