Freigeben über


Kompilieren von DSC-Konfigurationen in Azure Automation State Configuration

Hinweis

Azure Automation State Configuration wird am 30. September 2027 eingestellt. Wechseln Sie bis zu diesem Datum zu Azure Machine Configuration. Weitere Informationen finden Sie in der Ankündigung im Blogbeitrag. Der Azure-Computerkonfigurationsdienst kombiniert Features der DSC-Erweiterung und von Azure Automation State Configuration mit den am häufigsten angeforderten Features aus Kundenfeedback. Die Azure-Computerkonfiguration umfasst auch die Unterstützung von Hybridcomputern über Arc-fähige Server.

Achtung

Azure Automation DSC für Linux wurde am 30. September 2023 eingestellt. Weitere Informationen finden Sie in der Ankündigung.

Sie können DSC-Konfigurationen (Desired State Configuration, Konfiguration des gewünschten Zustands) folgendermaßen mit Azure Automation State Configuration kompilieren:

  • Kompilierungsdienst für Azure State Configuration

    • Einfache Methode mit interaktiver Benutzeroberfläche
    • Einfaches Nachverfolgen des Auftragsstatus
  • Windows PowerShell

    • Aufruf in Windows PowerShell auf der lokalen Arbeitsstation oder im Builddienst
    • Integration in Pipeline für Entwicklungstests
    • Bereitstellen komplexer Parameterwerte
    • Arbeiten mit Knoten- und Nicht-Knotendaten nach Maß
    • Beträchtliche Leistungsverbesserung

Sie können auch Azure Resource Manager-Vorlagen mit der Azure-Erweiterung zum Konfigurieren des gewünschten Zustands (Desired State Configuration, DSC) verwenden, um Konfigurationen auf Ihre Azure-VMs zu pushen. Die Azure DSC-Erweiterung nutzt das VM-Agent-Framework von Azure zur Übermittlung und Inkraftsetzung von DSC-Konfigurationen auf virtuellen Azure-Computern sowie zur Erstellung entsprechender Berichte. Weitere Informationen zur Kompilierung mit Azure Resource Manager-Vorlagen finden Sie in Desired State Configuration-Erweiterung mit Azure Resource Manager-Vorlagen.

Kompilieren einer DSC-Konfiguration in Azure State Configuration

Portal

  1. Wählen Sie im Automation-Konto Zustandskonfiguration (DSC) aus.
  2. Wählen Sie die Registerkarte Konfigurationen und dann den Namen der Konfiguration aus, die kompiliert werden soll.
  3. Klicken Sie auf Kompilieren.
  4. Wenn die Konfiguration keine Parameter enthält, werden Sie gefragt, ob Sie sie kompilieren möchten. Wenn die Konfiguration Parameter enthält, wird der Bereich Konfiguration kompilieren geöffnet, auf dem Sie Parameterwerte angeben können.
  5. Die Seite „Kompilierungsauftrag“ wird geöffnet, auf der Sie den Status des Kompilierungsauftrags nachverfolgen können. Sie können auf dieser Seite auch die Knotenkonfigurationen (MOF-Konfigurationsdokumente) nachverfolgen, die der Auftrag auf dem Azure Automation State Configuration-Pullserver platziert.

Azure PowerShell

Sie können Start-AzAutomationDscCompilationJob verwenden, um die Kompilierung mit Windows PowerShell zu beginnen. Der folgende Beispielcode startet die Kompilierung einer DSC-Konfiguration namens SampleConfig.

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'SampleConfig'

Start-AzAutomationDscCompilationJob gibt ein Kompilierungsauftragsobjekt zurück, das zum Nachverfolgen des Auftragsstatus verwendet werden kann. Anschließend können Sie dieses Kompilierungsauftragsobjekt mit Get-AzAutomationDscCompilationJob verwenden, um den Status des Kompilierungsauftrags zu ermitteln, und mit Get-AzAutomationDscCompilationJobOutput, um seine Streams (Ausgabe) anzuzeigen. Das folgende Beispiel startet die Kompilierung der SampleConfig-Konfiguration, wartet, bis die Kompilierung abgeschlossen ist, und zeigt dann die Datenströme an.

$CompilationJob = Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'SampleConfig'

while($null -eq $CompilationJob.EndTime -and $null -eq $CompilationJob.Exception)
{
    $CompilationJob = $CompilationJob | Get-AzAutomationDscCompilationJob
    Start-Sleep -Seconds 3
}

$CompilationJob | Get-AzAutomationDscCompilationJobOutput –Stream Any

Deklarieren grundlegender Parameter

Die Parameterdeklaration in DSC-Konfigurationen, einschließlich der Parametertypen und -eigenschaften, funktioniert genauso wie in Azure Automation-Runbooks. Informationen zu Runbookparametern finden Sie unter Starten eines Runbooks in Azure Automation.

Im folgenden Beispiel werden die Parameter FeatureName und IsPresent verwendet, um die Werte der Eigenschaften in der während der Kompilierung generierten Knotenkonfiguration ParametersExample.sample zu ermitteln.

Configuration ParametersExample
{
    param(
        [Parameter(Mandatory=$true)]
        [string] $FeatureName,

        [Parameter(Mandatory=$true)]
        [boolean] $IsPresent
    )

    $EnsureString = 'Present'
    if($IsPresent -eq $false)
    {
        $EnsureString = 'Absent'
    }

    Node 'sample'
    {
        WindowsFeature ($FeatureName + 'Feature')
        {
            Ensure = $EnsureString
            Name   = $FeatureName
        }
    }
}

Sie können DSC-Konfigurationen kompilieren, die grundlegende Parameter im Azure Automation State Configuration-Portal oder in Azure PowerShell verwenden.

Portal

Im Portal können Sie Parameterwerte eingeben, nachdem Sie auf Kompilierengeklickt haben.

Konfigurationsparameter für das Kompilieren

Azure PowerShell

PowerShell erfordert Parameter in einer Hashtabelle, in der der Schlüssel dem Parameternamen entspricht und der Wert gleich dem Parameterwert ist.

$Parameters = @{
    'FeatureName' = 'Web-Server'
    'IsPresent' = $False
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'ParametersExample' -Parameters $Parameters

Informationen zum Übergeben von PSCredential-Objekten als Parameter finden Sie unter Anmeldeinformationsassets.

Kompilieren von Konfigurationen, die zusammengesetzte Ressourcen enthalten, in Azure Automation

Das Feature Zusammengesetzte Ressourcen ermöglicht Ihnen, die DSC-Konfigurationen als geschachtelte Ressourcen innerhalb einer Konfiguration zu verwenden. Dieses Feature ermöglicht die Anwendung mehrerer Konfigurationen auf eine einzelne Ressource. Unter Zusammengesetzte Ressourcen: Verwenden einer DSC-Konfiguration als Ressource erfahren Sie mehr über zusammengesetzte Ressourcen.

Hinweis

Damit Konfigurationen mit zusammengesetzten Ressourcen ordnungsgemäß kompiliert werden, müssen Sie zunächst alle DSC-Ressourcen, die für die zusammengesetzten Elemente erforderlich sind, in Azure Automation importieren. Das Hinzufügen einer zusammengesetzten DSC-Ressource unterscheidet sich nicht vom Hinzufügen eines PowerShell-Moduls zu Azure Automation. Das Verfahren ist in Verwenden von Modulen in Azure Automation dokumentiert.

Verwalten von ConfigurationData beim Kompilieren von Konfigurationen in Azure Automation

Bei ConfigurationData handelt es sich um einen integrierten DSC-Parameter, mit dem Sie bei Verwendung von PowerShell DSC die Konfiguration der Struktur jeglicher umgebungsspezifischen Konfiguration trennen können. Weitere Informationen finden Sie unter Separating „What“ from „Where“ in PowerShell DSC (Trennen des „Was“ vom „Wo“ in PowerShell DSC).

Hinweis

Sie können beim Kompilieren in Azure Automation State Configuration ConfigurationData mit Azure PowerShell verwenden, jedoch nicht im Azure-Portal.

In der folgenden DSC-Beispielkonfiguration wird ConfigurationData über die Schlüsselwörter $ConfigurationData und $AllNodes verwendet. Für dieses Beispiel benötigen Sie außerdem das Modul xWebAdministration.

Configuration ConfigurationDataSample
{
    Import-DscResource -ModuleName xWebAdministration -Name MSFT_xWebsite

    Write-Verbose $ConfigurationData.NonNodeData.SomeMessage

    Node $AllNodes.Where{$_.Role -eq 'WebServer'}.NodeName
    {
        xWebsite Site
        {
            Name         = $Node.SiteName
            PhysicalPath = $Node.SiteContents
            Ensure       = 'Present'
        }
    }
}

Sie können die vorherige DSC-Konfiguration mit Windows PowerShell kompilieren. Das folgende Skript fügt dem Azure Automation DSC-Pullserver die beiden Knotenkonfigurationen ConfigurationDataSample.MyVM1 und ConfigurationDataSample.MyVM3 hinzu.

$ConfigData = @{
    AllNodes = @(
        @{
            NodeName = 'MyVM1'
            Role = 'WebServer'
        },
        @{
            NodeName = 'MyVM2'
            Role = 'SQLServer'
        },
        @{
            NodeName = 'MyVM3'
            Role = 'WebServer'
        }
    )

    NonNodeData = @{
        SomeMessage = 'I love Azure Automation State Configuration and DSC!'
    }
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'ConfigurationDataSample' -ConfigurationData $ConfigData

Arbeiten mit Ressourcen in Azure Automation während der Kompilierung

Objektverweise in Azure Automation State Configuration und Runbooks sind gleich. Weitere Informationen finden Sie in den folgenden Artikeln:

Anmeldeinformationen

Wenn eine Konfiguration einen Parameter aufweist, der ein PSCredential-Objekt angibt, können Sie Get-AutomationPSCredential verwenden, indem Sie den Namen eines Azure Automation-Anmeldeinformationsobjekts an das Cmdlet übergeben, um die Anmeldeinformationen abzurufen. Azure Automation übergibt die Anmeldeinformationen an die Konfiguration.

Um die Anmeldeinformationen in Knotenkonfigurationen sicher zu halten, verschlüsseln Sie die Anmeldeinformationen in der MOF-Datei der Knotenkonfiguration. Sie müssen PowerShell DSC die Berechtigung zum Ausgeben von Anmeldeinformationen im Klartext während der MOF-Generierung der Knotenkonfiguration erteilen. PowerShell DSC ist nicht bekannt, dass Azure Automation die gesamte MOF-Datei nach der Generierung über einen Kompilierungsauftrag verschlüsselt.

Sie können PowerShell DSC mitteilen, dass es in Ordnung ist, wenn Anmeldeinformationen in den mithilfe von Konfigurationsdaten generierten MOF-Dateien der Knotenkonfiguration im Klartext ausgegeben werden. Übergeben Sie PSDscAllowPlainTextPassword = $true über ConfigurationData für jeden Knotenblocknamen, der in der DSC-Konfiguration aufgeführt ist und Anmeldeinformationen verwendet.

Das folgende Beispiel zeigt eine DSC-Konfiguration, die ein Automation-Anmeldeinformationsobjekt verwendet.

Configuration CredentialSample
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration
    $Cred = Get-AutomationPSCredential 'SomeCredentialAsset'

    Node $AllNodes.NodeName
    {
        File ExampleFile
        {
            SourcePath      = '\\Server\share\path\file.ext'
            DestinationPath = 'C:\destinationPath'
            Credential      = $Cred
        }
    }
}

Sie können die vorherige DSC-Konfiguration über PowerShell kompilieren. Der folgende PowerShell-Code fügt dem Azure Automation DSC-Pullserver die beiden Knotenkonfigurationen CredentialSample.MyVM1 und CredentialSample.MyVM2 hinzu.

$ConfigData = @{
    AllNodes = @(
        @{
            NodeName = '*'
            PSDscAllowPlainTextPassword = $True
        },
        @{
            NodeName = 'MyVM1'
        },
        @{
            NodeName = 'MyVM2'
        }
    )
}

Start-AzAutomationDscCompilationJob -ResourceGroupName 'MyResourceGroup' -AutomationAccountName 'MyAutomationAccount' -ConfigurationName 'CredentialSample' -ConfigurationData $ConfigData

Hinweis

Wenn die Kompilierung abgeschlossen ist, wird möglicherweise die Fehlermeldung angezeigt The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported. Diese Meldung können Sie problemlos ignorieren.

Kompilieren Ihrer DSC-Konfiguration in Windows PowerShell

Der Prozess zum Kompilieren von DSC-Konfigurationen in Windows PowerShell ist im Artikel Schreiben, Kompilieren und Anwenden einer Konfiguration zu PowerShell DSC beschrieben. Sie können diesen Prozess auf der Arbeitsstation eines Entwicklers oder in einem Builddienst wie Azure DevOps ausführen. Anschließend können Sie die MOF-Dateien, die beim Kompilieren der Konfiguration erstellt werden, in den Azure State Configuration-Dienst importieren.

Beim Kompilieren in Windows PowerShell steht auch die Option zum Signieren von Konfigurationsinhalten zur Verfügung. Der DSC-Agent überprüft eine signierte Knotenkonfiguration lokal auf einem verwalteten Knoten. Durch die Überprüfung wird sichergestellt, dass die auf den Knoten angewandte Konfiguration aus einer autorisierten Quelle stammt.

Sie können auch Knotenkonfigurationen importieren, die außerhalb von Azure kompiliert wurden. Der Import schließt das Kompilieren auf der Arbeitsstation eines Entwicklers oder in einem Dienst wie Azure DevOps ein. Dieser Ansatz bietet mehrere Vorteile, z. B. hinsichtlich Leistung und Zuverlässigkeit.

Hinweis

Knotenkonfigurationsdateien dürfen nicht größer als 1 MB sein, damit sie in Azure Automation importiert werden können.

Weitere Informationen zum Signieren von Knotenkonfigurationen finden Sie unter Verbesserungen in WMF 5.1 – Signieren von Konfigurationen und Modulen.

Importieren von Knotenkonfigurationen im Azure-Portal

  1. Wählen Sie in Ihrem Automation-Konto unter Konfigurationsverwaltung die Option Zustandskonfiguration (DSC) aus.

  2. Wählen Sie auf der Seite „Zustandskonfiguration (DSC)“ die Registerkarte Konfigurationen und dann Hinzufügen aus.

  3. Wählen Sie auf der Seite „Importieren“ das Ordnersymbol neben dem Feld Knotenkonfigurationsdatei aus, um eine MOF-Knotenkonfigurationsdatei auf dem lokalen Computer zu suchen.

    Suchen einer lokalen Datei

  4. Geben Sie im Feld Konfigurationsname einen Namen ein. Dieser Name muss mit dem Namen der Konfiguration übereinstimmen, aus der die Knotenkonfiguration kompiliert wurde.

  5. Wählen Sie OK aus.

Importieren einer Knotenkonfiguration mit Azure PowerShell

Sie können das Cmdlet Import-AzAutomationDscNodeConfiguration verwenden, um eine Knotenkonfiguration in Ihr Automation-Konto zu importieren.

$importAzAutomationDscNodeConfigurationSplat = @{
    AutomationAccountName = 'MyAutomationAccount'
    ResourceGroupName = 'MyResourceGroup'
    ConfigurationName = 'MyNodeConfiguration'
    Path = 'C:\MyConfigurations\TestVM1.mof'
}
Import-AzAutomationDscNodeConfiguration @importAzAutomationDscNodeConfigurationSplat

Nächste Schritte