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
- Wählen Sie im Automation-Konto Zustandskonfiguration (DSC) aus.
- Wählen Sie die Registerkarte Konfigurationen und dann den Namen der Konfiguration aus, die kompiliert werden soll.
- Klicken Sie auf Kompilieren.
- 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.
- 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.
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
Wählen Sie in Ihrem Automation-Konto unter Konfigurationsverwaltung die Option Zustandskonfiguration (DSC) aus.
Wählen Sie auf der Seite „Zustandskonfiguration (DSC)“ die Registerkarte Konfigurationen und dann Hinzufügen aus.
Wählen Sie auf der Seite „Importieren“ das Ordnersymbol neben dem Feld Knotenkonfigurationsdatei aus, um eine MOF-Knotenkonfigurationsdatei auf dem lokalen Computer zu suchen.
Geben Sie im Feld Konfigurationsname einen Namen ein. Dieser Name muss mit dem Namen der Konfiguration übereinstimmen, aus der die Knotenkonfiguration kompiliert wurde.
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
- Eine Einführung finden Sie unter Erste Schritte mit Azure Automation State Configuration.
- Wie Sie DSC-Konfigurationen kompilieren und sie anschließend Zielknoten zuweisen, erfahren Sie unter Kompilieren von DSC-Konfigurationen in Azure Automation State Configuration.
- Eine Referenz zu den PowerShell-Cmdlets finden Sie unter Az.Automation.
- Eine Preisübersicht finden Sie unter Automation – Preise.
- Ein Anwendungsbeispiel für State Configuration in einer Continuous Deployment-Pipeline finden Sie unter Einrichten von Continuous Deployment mit Chocolatey.