Erstellen benutzerdefinierter Paketartefakte für Computerkonfigurationen

Bevor Sie beginnen, sollten Sie die Übersichtsseite zur Computerkonfiguration lesen.

Beim Überwachen/Konfigurieren von Windows und Linux wird für „Computerkonfiguration“ eine DSC-Konfiguration (Desired State Configuration) verwendet. Die DSC-Konfiguration definiert den Zustand, in dem sich der Computer befinden soll.

Wichtig

Benutzerdefinierte Pakete, die den Zustand einer Umgebung überwachen und Konfigurationen anwenden, haben den Supportstatus „Allgemeine Verfügbarkeit (GA)“. Es gelten jedoch die folgenden Einschränkungen:

Zur Verwendung von Maschinenkonfigurationspaketen, die Konfigurationen anwenden, ist Version 1.26.24 oder höher der Azure-VM-Gastkonfigurationserweiterung oder Arc-Agent 1.10.0 oder höher erforderlich.

Das Modul GuestConfiguration ist nur unter Ubuntu 18 und höher verfügbar. Aber das vom Modul erstellte Paket und die Richtlinien können für jede Linux-Distribution und -Version genutzt werden, die von Azure oder Arc unterstützt wird.

Das Testen von Paketen unter macOS ist nicht möglich.

Verwenden Sie keine geheimen oder vertraulichen Informationen in benutzerdefinierten Inhaltspaketen.

Erstellen Sie über die folgenden Schritte eine eigene Konfiguration zum Überprüfen des Zustands eines Azure- oder Nicht-Azure-Computers.

Installieren von PowerShell 7 und erforderlichen PowerShell-Modulen

Führen Sie zunächst die Schritte unter Einrichten einer Erstellungsumgebung für „Computerkonfiguration“ aus. Diese Schritte helfen Ihnen bei der Installation der erforderlichen Version von PowerShell für Ihr Betriebssystem, des Moduls GuestConfiguration und des Moduls PSDesiredStateConfiguration.

Erstellen einer Konfiguration

Erstellen und kompilieren Sie vor dem Erstellen eines Konfigurationspakets eine DSC-Konfiguration. Beispielkonfigurationen für Windows und Linux sind verfügbar.

Wichtig

Verwenden Sie zum Kompilieren von Konfigurationen für Windows die Version 2.0.7 von PSDesiredStateConfiguration (die stabile Version). Installieren Sie zum Kompilieren von Konfigurationen für Linux die Vorabversion 3.0.0.

Diese Beispielkonfiguration gilt für Windows-Computer. Der Computer wird so konfiguriert, dass die Umgebungsvariable MC_ENV_EXAMPLE in den Bereichen Process und Machine erstellt wird. Der Wert der Variablen wird auf 'This was set by machine configuration' festgelegt.

Configuration MyConfig {
    Import-DscResource -Name 'Environment' -ModuleName 'PSDscResources'
    Environment MachineConfigurationExample {
        Name   = 'MC_ENV_EXAMPLE'
        Value  = 'This was set by machine configuration'
        Ensure = 'Present'
        Target = @('Process', 'Machine')
    }
}

MyConfig

Wenn diese Definition in der Skriptdatei MyConfig.ps1 gespeichert ist, können Sie das Skript ausführen, um die Konfiguration zu kompilieren.

. .\MyConfig.ps1
    Directory: C:\dsc\MyConfig

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           5/16/2023 10:39 AM           1080 localhost.mof

Die Konfiguration wird in die Datei localhost.mof im Ordner MyConfig im aktuellen Arbeitsverzeichnis kompiliert. Benennen Sie localhost.mof in den Namen um, den Sie als Paketnamen verwenden möchten, wie z. B. in MyConfig.mof.

Rename-Item -Path .\MyConfig\localhost.mof -NewName MyConfig.mof -PassThru
    Directory: C:\dsc\MyConfig

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           5/16/2023 10:40 AM           1080 MyConfig.mof

Hinweis

In diesem Beispiel wird gezeigt, wie Sie eine Konfiguration für einen Windows-Computer erstellen und kompilieren. Für Linux müssen Sie ein benutzerdefiniertes DSC-Ressourcenmodul mithilfe von PowerShell-Klassen erstellen. Der Artikel Schreiben einer benutzerdefinierten DSC-Ressource mit PowerShell-Klassen enthält ein vollständiges Beispiel einer benutzerdefinierte Ressource und Konfiguration, die mit „Computerkonfiguration“ getestet wurde.

Der Rest dieses Artikels gilt für Konfigurationen, die für Linux- und Windows-Computer definiert sind, es sei denn, es werden plattformspezifische Überlegungen erwähnt.

Erstellen eines Konfigurationspaketartefakts

Nachdem die MOF-Datei kompiliert wurde, müssen die unterstützenden Dateien in einem Paket zusammengefasst werden. Das fertige Paket wird von der Computerkonfiguration verwendet, um die Azure Policy-Definitionen zu erstellen.

Mit dem Cmdlet New-GuestConfigurationPackage wird das Paket erstellt. Von der Konfiguration benötigte Module müssen im $Env:PSModulePath für die Entwicklungsumgebung verfügbar sein, damit die Befehle im Modul sie dem Paket hinzufügen können.

Parameter des Cmdlets New-GuestConfigurationPackage beim Erstellen von Windows-Inhalten:

  • Name: Paketname der Computerkonfiguration.
  • Konfiguration: Vollständiger Pfad für das kompilierte DSC-Konfigurationsdokument.
  • Pfad: Pfad des Ausgabeordners. Dieser Parameter ist optional. Wenn er nicht angegeben ist, wird das Paket im aktuellen Verzeichnis erstellt.
  • Typ: (Audit, AuditandSet): Bestimmt, ob die Konfiguration nur überwacht werden soll, oder ob durch die Konfiguration der Zustand des Computers geändert werden soll, sofern der Zustand nicht der gewünschte ist. Der Standardwert ist Audit.

Für diesen Schritt ist keine Rechteerweiterung erforderlich. Der Parameter Force dient zum Überschreiben vorhandener Pakete, wenn Sie den Befehl mehrmals ausführen.

Mit den folgenden Befehlen wird ein Paketartefakt erstellt:

# Create a package that will only audit compliance
$params = @{
    Name          = 'MyConfig'
    Configuration = './MyConfig/MyConfig.mof'
    Type          = 'Audit'
    Force         = $true
}
New-GuestConfigurationPackage @params
# Create a package that will audit and apply the configuration (Set)
$params = @{
    Name          = 'MyConfig'
    Configuration = './MyConfig/MyConfig.mof'
    Type          = 'AuditAndSet'
    Force         = $true
}
New-GuestConfigurationPackage @params

Es wird ein Objekt mit dem Namen und dem Pfad des erstellten Pakets zurückgegeben.

Name     Path
----     ----
MyConfig C:\dsc\MyConfig.zip

Erwarteter Inhalt eines Computerkonfigurationsartefakts

Das fertige Paket wird von der Computerkonfiguration verwendet, um die Azure Policy-Definitionen zu erstellen. Das Paket enthält Folgendes:

  • Kompilierte DSC-Konfiguration als MOF-Datei
  • Ordner „Modules“
    • Modul GuestConfiguration
    • Modul DscNativeResources
    • Für die MOF-Datei erforderliche DSC-Ressourcenmodule
  • Eine Datei mit der Metakonfiguration, in der das Paket type und version gespeichert werden

Das PowerShell-Cmdlet erstellt die .zip-Paketdatei. Es ist kein Ordner auf Stammebene oder Versionsordner erforderlich. Das Paketformat muss eine .zip-Datei sein, deren Gesamtgröße unkomprimiert 100 MB nicht überschreiten darf.

Sie können das Archiv erweitern, um es mithilfe des Cmdlets Expand-Archive zu untersuchen.

Expand-Archive -Path .\MyConfig.zip -DestinationPath MyConfigZip

Sie können die Gesamtgröße des unkomprimierten Pakets mit PowerShell abrufen.

Get-ChildItem -Recurse -Path .\MyConfigZip |
    Measure-Object -Sum Length |
    ForEach-Object -Process {
        $Size = [math]::Round(($_.Sum / 1MB), 2)
        "$Size MB"
    }

Erweitern der Computerkonfiguration mit Drittanbietertools

Die Artefaktpakete für die Computerkonfiguration können zum Einschluss von Drittanbietertools erweitert werden. Für die Erweiterung der Computerkonfiguration müssen zwei Komponenten entwickelt werden.

  • Eine Desired State Configuration-Ressource (DSC) zum Verarbeiten aller Verwaltungsaktivitäten für das Drittanbietertool
    • Installieren
    • Invoke
    • Ausgabe konvertieren
  • Inhalt im richtigen Format für die native Nutzung durch das Tool

Für die DSC-Ressource muss eine benutzerdefinierte Entwicklung durchgeführt werden, falls noch keine Communitylösung vorhanden ist. Sie können überprüfen, ob Communitylösungen verfügbar sind, indem Sie im PowerShell-Katalog nach dem Tag GuestConfiguration suchen.

Hinweis

Für die Erweiterbarkeit der Computerkonfiguration gilt das Szenario „BYOL (Bring Your Own License)“. Stellen Sie sicher, dass Sie die für Drittanbietertools geltenden Bedingungen erfüllt haben, bevor Sie diese verwenden.

Nachdem die DSC-Ressource in der Entwicklungsumgebung installiert wurde, sollten Sie den Parameter FilesToInclude für New-GuestConfigurationPackage verwenden, um den Inhalt für die Drittanbieterplattform in das Inhaltsartefakt einzubinden.

Nächster Schritt