powershell dsc desired state configuration - der windows papst powershell dsc – desired state...

Download Powershell DSC Desired State Configuration - Der Windows Papst Powershell DSC – Desired State Configuration

Post on 06-Sep-2019

2 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • 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

    http://www.der-windows-papst.de/ https://www.powershellgallery.com/items

  • 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.

    http://www.der-windows-papst.de/

  • 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.

    http://www.der-windows-papst.de/

  • 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.

    http://www.der-windows-papst.de/

  • 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

    http://www.der-windows-papst.de/

  • 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“.

    http://www.der-windows-papst.de/

  • 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

    http://www.der-windows-papst.de/

  • 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.

    http://www.der-windows-papst.de/

  • Powershell DSC – Desired State Configuration

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

    Die meta.mof Datei wurde erstellt.

    http://www.der-windows-papst.de/

  • 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.

    http://www.der-windows-papst.de/

  • 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

    http://www.der-windows-papst.de/

  • 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:

    http://www.der-windows-papst.de/

  • 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

    http://www.der-windows-papst.de/

  • 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.

    http://www.der-windows-papst.de/

  • 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

    http://www.der-windows-papst.de/

Recommended

View more >