Was hat ein DSC Skript mit dem Falcon LogScale Collector zu tun. Nun ja haben uns in diesem Artikel den Falcon LogScale Collector angeschaut und diesen über die Gruppenrichtlinie verteilt und installiert. Das ist die schnellste Variante, wenn man diesen nur installieren und nicht konfigurieren möchte. Es gilt insgesamt die folgenden Dinge durchzuführen, damit der LogScale Collector einsatzbereit ist.
- Installation
- (optional) Upgrade einer bestehenden Installation
- Konfiguration
Dazu habe ich dieses DSC Skript entwickelt und verwende dieses auch in der eigenen Umgebung.
DSC Skript als Erweiterung der Gruppenrichtlinie
Mit der Gruppenrichtlinie erreichen wir nur die ersten beiden Punkte, die Installation und das eventuelle Upgrade der Installation.
Um den gesamten Prozess zu vereinfachen, habe ich ein DSC Skript entworfen, was alle diese Dinge zusammen erledigen kann. Sollten wir das DSC Skript auf einem bereits konfigurierten System laufen lassen, so wird es nur die fehlenden Punkte erledigen – das Skript ist Idempotent.
Idempotenz bezeichnet die Unveränderbarkeit des Ergebnisses bei einer mehrfachen Verknüpfung oder Funktionsanwendung.
https://mathepedia.de/Idempotenz.html
So kann bei einem Update einfach die Installationsdatei ausgetauscht werden und das DSC Skript erkennt dieses und aktualisiert nur den Falcon LogScale Collector. Die Schritte die für das Enrollment, also die Verbindung zum eigenen Falcon LogScale Account, werden nicht durchgeführt.
Download des DSC Skript
Der einfachste und beste Weg dieses zu verteilen ist über Github. Hier kann ich es weiterentwickeln und ihr könnt Probleme oder Verbesserungswünsche posten.
Solltet ihr Probleme haben, oder auf Fehler stoßen. So meldet diese bitte über Github.
Aufbau des DSC Skript
Dieser schematische Aufbau zeigt, welche Schritte das Skript erledigt. Ein genaueren Blick hinter die Kulissen, wie das Skript funktioniert gebe ich euch demnächst hier.
Der wichtigste Teil stellt hier die Konfigurationsdatei config.json dar. In dieser werden Abschnitte definiert. Ein Abschnitt definiert eine Installation mit einem EnrollmentToken. Wie in dem Beispiel zu sehen ist, werden hier zwei unterschiedliche Sektionen angelegt.
Beispiel einer config.json
{
"dsc_share": "\\\\it-runs.de\\netlogon",
"installation_file": "\\\\it-runs.de\\netlogon\\log-collector\\humio-log-collector_1.5.1_windows_amd64.msi",
"sections": [
{
"name": "Exchange",
"enrollmentToken": "eyJpbnN0Y...WlvLmNvbSJ9"
},
{
"name": "Server",
"enrollmentToken": "eyJpbnN0Y...xnskoNvbSJ9"
}
]
}
Ich gehe einmal die einzelnen Zeilen durch und erläutere die Funktion dahinter.
Parameter „dsc_share“
Dieser Parameter ist ein UNC Pfad und zeigt auf die Ablage der DSC Dateien die das Skript erstellt hat. Dieser Pfad wird benötigt, da die PowerShell Start Skript Dateien, die für die Gruppenrichtlinie verwendet werden, diesen Pfad nutzen.
{
"dsc_share": "\\\\it-runs.de\\netlogon",
...
}
Den Inhalt einer solchen Datei seht ihr unten.
Parameter „installation_file“
Hiermit wird angegeben, welche Installationsdatei das Skript verwenden soll. Es muss hier wiederum auch ein UNC Pfad sein, dieser wird innerhalb der DSC Datei verwendet um die Datei herunterzuladen und zu installieren. Solltet ihr diese Datei ändern, oder den Pfad so muss das Script erneut durchgeführt werden.
{
...
"installation_file": "\\\\it-runs.de\\netlogon\\log-collector\\humio-log-collector_1.5.1_windows_amd64.msi",
...
}
Es muss auf die eigentliche Installationsdatei zeigen. Diese wird während des Durchlaufes auch geprüft und die gefundene Version wird angezeigt.
Parameter „sections“
Dieser Abschnitt kann sich beliebig oft wiederholen. Er dient dazu verschiedene Gruppenrichtlinien mit unterschiedlichen EnrollmentTokens zu verbinden.
{
...
"sections": [
{
"name": "Exchange",
"enrollmentToken": "eyJpbnN0Y...WlvLmNvbSJ9"
},
{
"name": "Server",
"enrollmentToken": "eyJpbnN0Y...xnskoNvbSJ9"
}
]
}
Jede Sektion muss die folgenden zwei Parameter enthalten.
- name – Beschreibend für die Erstellung der PowerShell Start Skripte
- enrollmentToken – Token aus dem Ingest (FleetManagement) von LogScale
Schritt für Schritt Anleitung zum Ausrollen
Hier eine kurze Schritt für Schritt Anleitung, wie das Skript genutzt werden kann.
Schritt 1 – Vorbereiten der Netzwerkfreigaben
Für die Verteilung der DSC Scripte und der Installationsdatei benötigen wir Netzlaufwerke auf dem diese liegen.
In meinem Beispiel verwende ich den NETLOGON Pfad der Domäne. Dieser ist für die Verteilung der Installationssoftware ausreichend. Der Pfad den ich hierfür verwende lautet:
//it-runs.de/netlogon/
Unter diesem Pfad lege ich einen Ordner namens log-collector an. In diesem werde ich die Installationsdateien kopieren, die ich für die Verteilung nutze. Zum Zeitpunkt der Anleitung ist die Version 1.5.1 aktuell. Die Datei kopiere ich einfach nachdem herunterladen in das Verzeichnis.
💡 Hinweis: Es ist natürlich möglich einen eigens für die Verteilung erstellten Netzwerkpfad zu nehmen. Dieser muss nur von den Servern/Computern lesbar sein.
Schritt 2 – Anpassen der config.json
In Schritt 1 haben wir die Netzwerkfreigaben angelegt und die Installationsdatei auf diesen bereit gestellt. Diese Angaben müssen jetzt noch in der config.json angepasst werden.
Der Netzwerkpfad, der als Grundlage der Verteilung der DSC Skripte dient, muss in den Parameter dsc_shareeingetragen werden.
Und die verwendete Installationsdatei, welche wir zuvor in Schritt 1 auf der Netzwerkfreigabe bereitgestellt haben, muss unter installation_file eingetragen werden.
💡 Hinweis: Bitte darauf achten, die Netzwerkpfade müssen doppelt escaped werden! Aus einem einfachen “\” wird ein “\\”.
Wie oben schon beschrieben, könnt ihr beliebig viele Sektionen anlegen. Diese erzeugen dann entsprechende Dateien, die wiederum in Gruppenrichtlinien verwendet werden können.
Schritt 3 – Ausführen des DSC Skriptes
Nachdem alle Vorarbeiten abgeschlossen sind, könnt ihr das Script starten. Dieses geschieht über den folgenden Befehl.
.\\Invoke-CreateLogScaleDSC.ps1
Sollte alles richtig konfiguriert sein, so sieht die Ausgabe auf dem Bildschirm wie folgt aus.
Die Ausführung war erfolgreich und die erstellten Dateien müssen nur noch weiterverwendet werden.
Der erstellte Ordner DSC muss in das Verzeichnis ,welches unter dem Parameter dsc_share angegeben wurde, kopiert werden. In diesem befinden sich die erstellten DSC Dateien, die für die Gruppenrichtlinien verwendet werden.
Schritt 4 – Erstellung der Gruppenrichtlinie
Damit die DSC Skripte aufgerufen werden können, muss dazu eine passende Gruppenrichtlinie erstellt werden. Hierzu empfiehlt es sich eine neue Gruppenrichtlinie zu erstellen. Hier ein Beispiel:
Gruppenrichtlinie Global_C_LogScale-Server
Innerhalb der erstellen Gruppenrichtlinie muss nur ein einzelner Eintrag bearbeitet werden. Die beim Start ausgeführten Skripte – Computer Konfiguration → Richtlinien → Windows Einstellungen → Skripte → Start.
Innerhalb des Fenster wechseln wir auf die PowerShell Skripte und öffnen mit Dateien anzeigen den UNC Pfad zur Gruppenrichtlinie. In diesen Ordner kopieren wir, die passende Datei aus dem Ordner GroupPolicy. Für unser Beispiel die Datei DSC_LogScale_Server.ps1. Nachdem der Kopiervorgang abgeschlossen ist, die Datei ist nur wenige KB groß, kann das Fenster geschlossen werden.
Wir müssen jetzt nur noch die Datei in der Gruppenrichtlinie bekannt machen, das diese auch beim Start ausgeführt wird. Dazu gehen wir auf Hinzufügen und tragen nur den Namen der Datei ein, nicht den kompletten Pfad. Und speichern das ganze mit OK.
Damit ist die Gruppenrichtlinie fertig und sie sollte, wie auf dem oberen Screenshot zu sehen ist, konfiguriert sein. Diese kann jetzt einem Testsystem zugewiesen werden und nach einem Neustart ist der LogScale Collector installiert und über den EnrollmentToken mit dem Repository verbunden.
Schritt 5 – …
…
Schritt 6 – Profit
Ihr habt es bis hierher geschafft. Glückwunsch.
Ich würde mich über Anregungen, Verbesserungsvorschläge, Ideen, etc. freuen. Schreibt mir gerne über Github falls ihr einen Fehler gefunden habt. Oder schreibt mir ganz einfach eine E-Mail.