Mit Azure DSC lokale Computer konfigurieren

Hallo !

Dieser Blog beschreibt, wie man mittels eines Azure Automation Accounts lokale Computer konfigurieren kann. Die Informationen habe ich vorwiegend von dieser Seite,

https://docs.microsoft.com/en-us/azure/automation/automation-dsc-overview

Jedoch auf das Wesentliche für die Einbindung lokaler Server beschränkt.

Voraussetzungen

Man braucht ein Azure Automation Konto. Die Anleitung wie man so eines anlegt findet man hier.

Serverseitig müssen die lokalen Computer Windows Management Framework (WMF) 5.x haben (am Besten gleich 5.1 installieren), dieses findet man hier.

Auch der Computer auf dem man die Konfigs erzeugt (Managementcomputer) muss WMF 5.x installiert haben.

Der DSC Endpunkt

Jedes Azure Automation Konto hat automatisch einen DSC Endpoint. Im Azure Automation Menü sieht man den wie unten.

clip_image001

Die drei Menüpunkte stehen für:

DSC Nodes: Computer die diesem DSC-Konfigurationsserver zugeordnet sind

DSC Configurations: Konfigurationen, die zur Anwendung zur Verfügung stehen

DSC Node Configurations: Verknüpfungen Node/Configurations um die Konfiguration zu überwachen.

Der DSC Service ist von dem Moment an, wo der Azure Automation Account eingerichtet ist von außen erreichbar und hört bei Azure Services in Westeuropa auf:

https://we-agentservice-prod-1.azure-automation.net

Dies funktioniert aber nur dann, wenn man es mit einem Account und einem Registration Key verknüpft wird, aber dazu später mehr.

Eine Konfiguration erstellen

Als Übung wollen wir auf unseren Zielsystemen einen Registry Key eintragen und dort forcieren.

Wir legen also auf unserem Managementcomputer eine Datei mit dem Namen SecurePowerShellEnvironment.ps1 an.

Finales Ziel ist es, eine sichere PowerShell Umgebung zu konfigurieren, deshalb der Name, aber beginnen wir mal langsam mit einem einzelnen Registry Key.

Die Struktur der Datei sieht dann so aus:

Die Zeile mit Import-Module wird benötigt, um das Modul zu laden welches die Resource „Registry“ enthält.

Der Dateiname unserer .ps1 Datei ist nur zufällig identisch mit dem DSCConfigurationName, ich dachte mir das ist dann einfacher zu verwalten.

Wir wollen also nun:

  1. eine DSC Configuration in Azure DSC anlegen mit dem Namen: SecurePowerShellEnvironment
  2. einen NodeNamen vergeben : ServerOSRole
  3. auf den TargetNodes einen Registry Wert forcieren: „HKEY_LOCAL_MACHINE\SOFTWARE\PowerShell Usergroup Austria“ mit dem
    Wert „DSCTest“ Inhalt „Works“ vom Datentyp „String“

Die fertige Datei sieht somit folgendermaßen aus:

 

Konfiguration in Azure DSC einspielen und aktivieren

Nach dem abspeichern der Datei SecurePowerShellEnvironment.ps1 kann man diese nun in Azure DSC einspielen. Dazu geht man im Azure-Portal auf:

clip_image002

und clickt auf

clip_image003

Danach erscheint das Auswahlfenster in dem man eine PS1 Datei hochladen kann.

clip_image004

Nach Auswahl unserer Datei OK klicken,

clip_image005

und die Configuration ist hochgeladen.

Nun fehlt noch ein Schritt, und zwar das kompilieren in eine MOF Datei, denn vorher ist die Configuration nicht verwendbar.

clip_image006

Wenn dies ausgeführt wurde, sollte ein erfolgreicher Compile-Job unter der Configuration erscheinen.

clip_image007

Nun haben wir den Azure-DSC-seitigen Teil der Vorbereitungen abgeschlossen. Der nächste Schritt ist es die lokalen Server zu konfigurieren.

Lokale Server mit dem Azure DSC Dienst verbinden

Der Local Configuraqtion Manager (LCM) aller lokalen Server (oder Server die in einer anderen Cloud als Azure oder AWS stehen) müssen konfiguriert werden, um den Azure DSC Host als Pull-Server zu akzeptieren. Für die anderen beiden Optionen hat Azure Menüoptionen die hier erklärt sind.

Für die Konfiguration des LCM gibt es das CMDLet Set-DSCLocalConfigurationManager mit dem Parameter -Path, welches auf eine MOF Datei zeigen muss, und genau die konfigurieren wir jetzt.

Wir nennen diese Konfiguration MetaConfig. Die Metaconfig wird grundsätzlich ähnlich wie eine DSC Config gebaut, aber mit ein paar Feinheiten:(Beispiel unten)

Man sagt also dem LCM von wo er sich Daten holen soll und gibt noch ein paar Konfigurationsdaten mit. Wir wollen jetzt folgendes einstellen.

Einer unserer Server mit dem Namen „esflovian.thegalaxy.local“ soll die vorhin erstellte Configuration „SecurePowerShellEnvironment“ erhalten und DSC soll diese Configuration auch forcieren.

Dazu laden wir uns zuerst das Beispiel von der Docs Seite herunter.

https://docs.microsoft.com/en-us/azure/automation/automation-dsc-onboarding#generating-dsc-metaconfigurations

Dann brauchen wir noch die DSC Pullserver RegistrieungsURL und einen Key. Beides findet man im Azure Portal im Automation Account unter „Keys“

clip_image008

clip_image009

Wir brauchen den Primary Key und die URL.

In der heruntergeladenen Meta-Config .ps1 Datei fügen wir diese Werte ganz unten bei den Parametern ein.

Gleich darunter fügen wir den Namen des Rechners ein den wir mit DSC steuern wollen (Falls es mehrere Rechner sein sollen,  diese mit Beistrich trennen).

Dieser Name wird dann auch der Name des MOF Files sein und muss beim Befehl Set-DSCLocalConfigurationManager verwendet werden.

Zuletzt wollen wir dass die Konfiguration forciert wird und ändern den Parameter ConfigurationMode auf AutoCorrect.

Jetzt das Script ausführen, am Ende steht der Befehl „DscMetaConfigs @Params“ welcher die MOF Datei

.\DSCMetaconfigs\esflovian.thegalaxy.local.meta.mof

anlegt.

Jetzt müssen wir nur noch dem LCM von Esflovian diese Konfiguration „verpassen“. Dazu eine PowerShell Session als Admin starten, der auch auf dem Zielsystem lokaler Admin ist und folgenden Befehl eingeben.

Im Pfad muss der Ort eingegeben werden an dem die mof Datei liegt. Der Computername muss identisch mit dem Namen sein der in der Konfiguration angegeben ist.

Nach ein paar Minuten sollte im Azure Portal unter DSC Nodes der Computer und die NodeConfiguration erscheinen.

clip_image010

Konfiguration testen

Azure DSC hat ja den Vorteil die Aktualität der Configuration im Portal anzuzeigen (Status „Compliant“) . Jetzt schauen wir mal nach ob die Registry wirklich geändert wurde.

Aus unserer Admin Powershell session verbinden wir uns mit der Maschine und durchsuchen die Registry nach dem neuen Key

 

Wenn dieses Ergebnis gezeigt wird ist die erste Konfiguration gelungen!

Viel Spaß beim Nachbilden wünscht Roman