Powershell DSC Desired State Configuration - Der Windows Papst · Powershell DSC – Desired State...

15
Powershell DSC – Desired State Configuration Erstellt von Jörn Walter www.der-windows-papst.de – 04.04.2017 Ab der Powershell Version 4 wird DSC unterstützt. Ich nutze Windows 10 und habe es standardmäßig on Board. Vorbereitung: Download der individuell benötigten Module aus der Powershell Gallery https://www.powershellgallery.com/items Herunterladen und installieren der Module: Save-Module -Name PSDscResources -Path C:\DSC\Module Install-Module -Name PSDscResources Save-Module -Name xPSDesiredStateConfiguration -Path C:\DSC\Module Install-Module -Name xPSDesiredStateConfiguration

Transcript of Powershell DSC Desired State Configuration - Der Windows Papst · Powershell DSC – Desired State...

Page 1: Powershell DSC Desired State Configuration - Der Windows Papst · Powershell DSC – Desired State Configuration Erstellt von Jörn Walter – 04.04.2017 Ab der Powershell Version

Powershell DSC – Desired State Configuration

Erstellt von Jörn Walter www.der-windows-papst.de – 04.04.2017

Ab der Powershell Version 4 wird DSC unterstützt. Ich nutze Windows 10 und habe es

standardmäßig on Board.

Vorbereitung: Download der individuell benötigten Module aus der Powershell Gallery

https://www.powershellgallery.com/items

Herunterladen und installieren der Module:

Save-Module -Name PSDscResources -Path C:\DSC\Module Install-Module -Name PSDscResources

Save-Module -Name xPSDesiredStateConfiguration -Path C:\DSC\Module Install-Module -Name xPSDesiredStateConfiguration

Page 2: Powershell DSC Desired State Configuration - Der Windows Papst · Powershell DSC – Desired State Configuration Erstellt von Jörn Walter – 04.04.2017 Ab der Powershell Version

Powershell DSC – Desired State Configuration

Erstellt von Jörn Walter www.der-windows-papst.de – 04.04.2017

Mit dem Befehl Find-DscResource fragen wir online die verfügbaren Module ab.

Mit dem Befehl Install-Module –Name OctopusDSC –Scope AllUsers –Force; laden wir das

Module herunter und installieren es anschließend.

Page 3: Powershell DSC Desired State Configuration - Der Windows Papst · Powershell DSC – Desired State Configuration Erstellt von Jörn Walter – 04.04.2017 Ab der Powershell Version

Powershell DSC – Desired State Configuration

Erstellt von Jörn Walter www.der-windows-papst.de – 04.04.2017

Nach dem Import finden wir die Module unter

C:\Program Files\WindowsPowerShell\Modules

Folgende Warnung erscheint, wenn das eingesetzte Modul nicht importiert wird. DSC

Module sind keine CMD-Lets und können nur in Script-Blocks eingesetzt werden.

Fangen wir damit an zu überprüfen ob eine Datei vorhanden ist.

Page 4: Powershell DSC Desired State Configuration - Der Windows Papst · Powershell DSC – Desired State Configuration Erstellt von Jörn Walter – 04.04.2017 Ab der Powershell Version

Powershell DSC – Desired State Configuration

Erstellt von Jörn Walter www.der-windows-papst.de – 04.04.2017

Nach dem Import des Moduls taucht die Fehlermeldung nicht mehr auf.

Das erstelle (kompilierte) .mof (Managed Object Format) File hat folgenden Inhalt und

wird später dem DSC Agent LCM (Local Configuration Manager) zur Verarbeitung

übergeben.

Page 5: Powershell DSC Desired State Configuration - Der Windows Papst · Powershell DSC – Desired State Configuration Erstellt von Jörn Walter – 04.04.2017 Ab der Powershell Version

Powershell DSC – Desired State Configuration

Erstellt von Jörn Walter www.der-windows-papst.de – 04.04.2017

Start-DscConfiguration -wait -verbose -force -Path C:\DSC\NDSEDV

Der LCM Agent hat das erstellte .mof File verarbeitet und folgendes Ergebnis

ausgegeben: Das Zielobjekt wurde gefunden…

Sollte eine Fehlermeldung erscheinen ist in der Regel der Windows Remote Management

Dienst einzuschalten (WINRM), verzögerter Start.

Powershell:

configuration ndsedv {

param ()

Import-DscResource –ModuleName ’PSDesiredStateConfiguration’;

File WindowsUpdateLog {

DestinationPath = 'C:\Windows\WindowsUpdate.log';

Ensure = 'Present';

}

}

mkdir -Path C:\DSC\NDSEDV;

NDSEDV -OutputPath C:\DSC\NDSEDV;

Start-DscConfiguration -wait -verbose -force -Path C:\DSC\NDSEDV

Page 6: Powershell DSC Desired State Configuration - Der Windows Papst · Powershell DSC – Desired State Configuration Erstellt von Jörn Walter – 04.04.2017 Ab der Powershell Version

Powershell DSC – Desired State Configuration

Erstellt von Jörn Walter www.der-windows-papst.de – 04.04.2017

Suche ich nun nach der Datei C:\Windows\WindowsUpdate1.log erhalte ich eine

Fehlermeldung. Logisch denn diese existiert nicht. Außerdem fehlt der Wert Contents zur

Erstellung einer neuen Datei.

Verändere ich den Code und sage aus, das diese Datei existieren muss wird diese neue

erstellt und zwar mit dem Inhalt „DerWindowsPapst“.

Page 7: Powershell DSC Desired State Configuration - Der Windows Papst · Powershell DSC – Desired State Configuration Erstellt von Jörn Walter – 04.04.2017 Ab der Powershell Version

Powershell DSC – Desired State Configuration

Erstellt von Jörn Walter www.der-windows-papst.de – 04.04.2017

Der LCM ist ein integraler Bestandteil der Powershell und kann individuell angepasst

werden.

Die aktuellen Settings lesen wir mit diesem Befehl aus:

Get-DscLocalConfigurationManager

Page 8: Powershell DSC Desired State Configuration - Der Windows Papst · Powershell DSC – Desired State Configuration Erstellt von Jörn Walter – 04.04.2017 Ab der Powershell Version

Powershell DSC – Desired State Configuration

Erstellt von Jörn Walter www.der-windows-papst.de – 04.04.2017

Eine neue LCM Konfiguration könnte so aussehen:

[DSCLocalConfigurationManager()]

configuration LCMConfig

{

Node localhost

{

Settings

{

RefreshMode = 'Push' # Alternative: 'Pull'

ConfigurationMode = 'ApplyAndMonitor' # Alternative: 'ApplyOnly',

'ApplyAndAutoCorrect'

ConfigurationModeFrequencyMins = '30'

RefreshFrequencyMins = '45'

}

}

}

LCMconfig

Jetzt muss die neue Konfiguration kompiliert werden. Script-Block ausführen und danach

den Befehl LCMConfig starten.

Page 9: Powershell DSC Desired State Configuration - Der Windows Papst · Powershell DSC – Desired State Configuration Erstellt von Jörn Walter – 04.04.2017 Ab der Powershell Version

Powershell DSC – Desired State Configuration

Erstellt von Jörn Walter www.der-windows-papst.de – 04.04.2017

Die meta.mof Datei wurde erstellt.

Page 10: Powershell DSC Desired State Configuration - Der Windows Papst · Powershell DSC – Desired State Configuration Erstellt von Jörn Walter – 04.04.2017 Ab der Powershell Version

Powershell DSC – Desired State Configuration

Erstellt von Jörn Walter www.der-windows-papst.de – 04.04.2017

Damit die neue Konfiguration übernommen wird muss diese auch gesetzt werden. Der

Befehl dazu lautet:

Set-DscLocalConfigurationManager -Path C:\DSC\NDSEDV\LCMConfig -Force -Verbose

Fragen wir die Konfiguration erneut ab müssten die Settings übernommen worden sein.

Page 11: Powershell DSC Desired State Configuration - Der Windows Papst · Powershell DSC – Desired State Configuration Erstellt von Jörn Walter – 04.04.2017 Ab der Powershell Version

Powershell DSC – Desired State Configuration

Erstellt von Jörn Walter www.der-windows-papst.de – 04.04.2017

Nächstes Beispiel:

Einen Ordner auf Vorhandensein überprüfen, wenn nicht anlegen lassen. An diesem

Beispiel sehen wir die Vorgehensweise etwas detaillierter, welche Blöcke in welcher

Reihenfolge ausgeführt werden müssen.

Configuration Ordner {

Import-DscResource –ModuleName ’PSDesiredStateConfiguration’;

Node Worker {

File OrdnerDemo {

Type = 'Directory'

DestinationPath = 'F:\Archiv'

Ensure = "Present"

}

}

}

Ordner -OutputPath C:\DSC\Ordner;

Start-DscConfiguration -wait -verbose -force -Path C:\DSC\Ordner

Page 12: Powershell DSC Desired State Configuration - Der Windows Papst · Powershell DSC – Desired State Configuration Erstellt von Jörn Walter – 04.04.2017 Ab der Powershell Version

Powershell DSC – Desired State Configuration

Erstellt von Jörn Walter www.der-windows-papst.de – 04.04.2017

Eine erneute Überprüfung ob der Ordner vorhanden ist:

Page 13: Powershell DSC Desired State Configuration - Der Windows Papst · Powershell DSC – Desired State Configuration Erstellt von Jörn Walter – 04.04.2017 Ab der Powershell Version

Powershell DSC – Desired State Configuration

Erstellt von Jörn Walter www.der-windows-papst.de – 04.04.2017

Nächstes Beispiel: Eine Datei von Source nach Destination kopieren.

Configuration Dateikopieren {

Import-DscResource –ModuleName ’PSDesiredStateConfiguration’;

Node Worker {

File Datei {

DestinationPath = 'E:\Archiv\Testdatei_kopiert.txt'

SourcePath = "F:\Archiv\Testdatei.txt"

Ensure = "Present"

Force = $true

MatchSource = $true

}

}

}

Dateikopieren -OutputPath C:\DSC\Dateikopieren;

Start-DscConfiguration -wait -verbose -force -Path C:\DSC\Dateikopieren

Page 14: Powershell DSC Desired State Configuration - Der Windows Papst · Powershell DSC – Desired State Configuration Erstellt von Jörn Walter – 04.04.2017 Ab der Powershell Version

Powershell DSC – Desired State Configuration

Erstellt von Jörn Walter www.der-windows-papst.de – 04.04.2017

Nächstes Beispiel:

Dateien kopieren und Dienst wieder starten. Ein Dienst kann nur einmal in einem

Skriptblock aufgeführt werden. Entweder zum Starten oder stoppen.

Page 15: Powershell DSC Desired State Configuration - Der Windows Papst · Powershell DSC – Desired State Configuration Erstellt von Jörn Walter – 04.04.2017 Ab der Powershell Version

Powershell DSC – Desired State Configuration

Erstellt von Jörn Walter www.der-windows-papst.de – 04.04.2017

Configuration MeinService {

Import-DscResource –ModuleName ’PSDesiredStateConfiguration’;

Node "localhost"

{

File Dateienkopieren

{

SourcePath = "F:\Archiv"

DestinationPath = "E:\Archiv"

Recurse = $True

Force = $true

MatchSource = $true

Ensure = "Present"

}

Service StartService

{

Name = "Spooler"

State = "Running"

DependsOn = "[File]Dateienkopieren"

}

}

}

MeinService -OutputPath C:\DSC\MeinService;

Start-DscConfiguration -wait -verbose -force -Path C:\DSC\MeinService

Weitere Beispiele folgen in Kürze…

Get-DscResource | Select-Object -Property Name, Properties

Get-Command -Module PSDesiredStateConfiguration | Select-Object -Property

CommandType, Name