Kompilieren von DSC-Konfigurationen in Azure Automation State Configuration

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. Klicken Sie im Automation-Konto auf Zustandskonfiguration (DSC) .
  2. Klicken Sie auf die Registerkarte Konfigurationen und dann auf den Namen der Konfiguration, 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 das Blatt 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.

Configuration compile parameters

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 Pulldienst von Azure Automation State Configuration die beiden Knotenkonfigurationen hinzu: ConfigurationDataSample.MyVM1 und ConfigurationDataSample.MyVM3

$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 unter

Anmeldeinformationen

DSC-Konfigurationen in Azure Automation können mithilfe des Cmdlets Get-AutomationPSCredential auf Automation-Anmeldeinformationsobjekte verweisen. Wenn eine Konfiguration einen Parameter aufweist, der ein PSCredential-Objekt angibt, können Sie Get-AutomationPSCredential verwenden, indem Sie den Zeichenfolgennamen eines Azure Automation-Anmeldeinformationsobjekts an das Cmdlet übergeben, um die Anmeldeinformationen abzurufen. Verwenden Sie dieses Objekt anschließend für den Parameter, der das PSCredential-Objekt erfordert. Im Hintergrund wird das Azure Automation-Anmeldeinformationsobjekt mit diesem Namen abgerufen und an die Konfiguration übergeben. Das nachstehende Beispiel stellt die praktische Anwendung dieses Szenarios dar.

Um die Sicherheit von Anmeldeinformationen in Knotenkonfigurationen (MOF-Konfigurationsdokumente) zu gewährleisten, müssen diese Informationen in der MOF-Datei der Knotenkonfiguration verschlüsselt werden. Derzeit müssen Sie 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 State Configuration-Pullserver zwei Knotenkonfigurationen hinzu: 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, erhalten Sie möglicherweise die Fehlermeldung The 'Microsoft.PowerShell.Management' module was not imported because the 'Microsoft.PowerShell.Management' snap-in was already imported., die Sie ignorieren können.

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 (MOF-Dateien) 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. Klicken Sie in Ihrem Automation-Konto unter Konfigurationsverwaltung auf Zustandskonfiguration (DSC) .

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

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

    Browse for local file

  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. Klicken Sie auf OK.

Importieren einer Knotenkonfiguration mit Azure PowerShell

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

Import-AzAutomationDscNodeConfiguration -AutomationAccountName 'MyAutomationAccount' -ResourceGroupName 'MyResourceGroup' -ConfigurationName 'MyNodeConfiguration' -Path 'C:\MyConfigurations\TestVM1.mof'

Nächste Schritte