Listing 6
# chmod 755 /etc/init.d/omiserver # update-rc.d omiserver defaults # service omiserver start
Auf der Windows-Seite benötigen Sie noch ein spezielles Modul, das die Befehle der DSC vor dem Versenden korrekt übersetzt. Das Nx-Modul laden Sie unter Windows von Github herunter [4] und entpacken es nach %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\. Um es zu verwenden, tragen Sie die Zeile Import-DscResource -Module nx im Konfigurationsblock des Powershell-Skripts ein.
Erste Konfiguration
Bevor Sie die erste Konfiguration mit DSC versenden, stellen Sie zuerst eine Verbindung zwischen Client und Server her. Das erfolgt in der Powershell über ein CIMSession-Objekt (Listing 7).
Listing 7
$username = "root" $hostname = "Hostname" $port = 5985 $Cred = Get-Credential -UserName root -Message "Enter root password" $CimOptions = New-CimSessionOption -SkipCACheck -SkipCNCheck SkipRevocationCheck $cimSession = New-CimSession -Credential $Cred -ComputerName $hostname -Port $port -Authentication Basic -SessionOption $CimOptions $cimSession
Um die neue Konfiguration auf dem Linux-Server anzuwenden, benötigen Sie Root-Rechte, weshalb die Anmeldung auf dem RasPi als Benutzer root und mit dessen Passwort erfolgt. Als Hostname verwenden Sie die aktuelle IP-Adresse des Mini-PCs. Beim Port 5985 handelt es sich um eine Standardadresse für die Kommunikation über CIM. Mit dem Cmdlet (so heißen Befehle in der Powershell) New-CimSession erstellen Sie das CIMSession-Objekt und speichern es in der Variablen $cimSession (Abbildung 1).

Abbildung 1: Nach dem erfolgreichen Ausführen des Cmdlets enthält die Variable »$cimSession« das CIMSession-Objekt mit Objekt-ID, Namen und weiteren Parametern.
Als Protokoll beim Übertragen der Textdateien kommt WSMAN (WS-Management) zum Einsatz. Dahinter verbirgt sich ebenfalls ein plattformunabhängiger Standard zum Austausch von Informationen zwischen Computersystemen. Die Implementation unter Windows heißt WinRM und kommt seit der Powershell 2.0 beim Ausführen einzelner Befehle oder ganzer Skripte auf entfernten Systemen zum Einsatz.
Erstes Skript
Powershell-Skripte generieren Sie am einfachsten in der Powershell ISE. Das Skript MyDSCDemo kopiert eine einfache Textdatei auf den RasPi. Dazu erstellen Sie zunächst einen Block wie in Listing 8, der quasi das Gerüst des Skripts bildet.
Um die Konfiguration nach Linux zu übersetzen, importieren Sie innerhalb des Blocks das Modul nx. Damit die Powershell weiß, auf welchem Rechner sie die Konfiguration anwenden soll, teilen Sie ihr den Server-Namen oder die IP-Adresse im Ausdruck Node mit. Mit der Ressource nxFile erstellen Sie Dateien auf dem RasPi.
Listing 8
Configuration MyDSCDemo
{
Import-DSCResource -Module nx
Node "Hostname"{
nxFile myTestFile
{
Ensure = "Present"
Type = "File"
DestinationPath = "/root/dsctest"
Contents="Hallo Welt!`n"
}
}
}
Um die Konfiguration anzuwenden, speichern Sie die Datei als Powershell-Skript und führen sie selbst einmal aus. Anschließend starten Sie die DSC. Das Skript aus Listing 9 erstellt zuerst den Ordner C:\dscconfig, falls es ihn noch nicht gibt. Dort speichert es die Konfiguration in Gestalt einer MOF-Datei ab (Abbildung 2). Diese MOF-Dateien fungieren als Konfigurationsdateien, die das Skript zum Linux-Rechner überträgt. Letztendlich ist DSC mit der Powershell ISE also nichts anderes als ein komfortabler Editor, um diese etwas kryptischen MOF-Dateien zu erstellen.
Listing 9
$null = md C:\dscconfig -ErrorAction SilentlyContinue MyDSCDemo -OutputPath:"C:\dscconfig" Start-DscConfiguration -CimSession:$cimSession -Path:"C:\dscconfig" -Wait -Verbose Get-DscConfiguration -CimSession:$cimSession
Nachdem die Datei MyDSCDemo erstellt wurde, starten Sie sie mit dem Cmdlet Start-DscConfiguration. Hängen Sie die Option -verbose ans Ende an, so erhalten Sie mehr Infos darüber, was beim Ausführen passiert. Das Cmdlet Get-DscConfiguration zeigt das Ergebnis detailliert an.
Erscheint nach dem Ausführen des Cmdlets Start-DscConfiguration ein Fehler, muss das nicht unbedingt an der Konfigurationsdatei liegen, sondern hängt eventuell damit zusammen, dass auf Clients unter Windows 7 oder 8.1 WinRM standardmäßig ausgeschaltet ist. Nachdem Sie es aktiviert und den Durchgang durch die Firewall erlaubt haben, sollte alles funktionieren (Listing 10).
Listing 10
winrm quickconfig
winrm set winrm/config/service/auth @{Basic="true"}
winrm set winrm/config/service @{AllowUnencrypted="true"}






