Teilen über


Planen der Migration von Azure Automation State Configuration zu einer Computerkonfiguration

Die Computerkonfiguration ist die neueste Implementierung der Funktionalität, die von Azure Automation State Configuration (auch als Azure Automation Desired State Configuration oder AADSC bezeichnet) bereitgestellt wurde. Wenn möglich, sollten Sie planen, Ihre Inhalte und Computer in den neuen Dienst zu verschieben. Dieser Artikel enthält Anleitungen zum Entwickeln einer Migrationsstrategie von Azure Automation zur Computerkonfiguration.

Kundenanforderungen werden durch neue Features in der Computerkonfiguration erfüllt:

  • Höhere Größenbeschränkung für Konfigurationen (100 MB)
  • Erweiterte Berichterstellung über Azure Resource Graph einschließlich Ressourcen-ID und Status
  • Verwalten mehrerer Konfigurationen für denselben Computer
  • Wenn Computer vom gewünschten Zustand abweichen, steuern Sie, wann die Wiederherstellung erfolgt
  • Linux und Windows nutzen beide PowerShell-basierte DSC-Ressourcen

Bevor Sie beginnen, sollten Sie die allgemeinen Informationen zur Azure Policy-Computerkonfiguration lesen.

Grundlegendes zur Migration

Der beste Ansatz für die Migration ist die erneute Bereitstellung von Inhalten und dann die Migration von Computern. In diesem Abschnitt werden die erwarteten Schritte für die Migration beschrieben.

  1. Exportieren von Konfigurationen aus Azure Automation
  2. Ermitteln von Modulanforderungen und Laden in Ihrer Umgebung
  3. Kompilieren von Konfigurationen
  4. Erstellen und Veröffentlichen von Paketen für Computerkonfigurationen
  5. Testen von Paketen für Computerkonfigurationen
  6. Integrieren von Hybridcomputern in Azure Arc
  7. Aufheben der Registrierung von Servern bei Azure Automation State Configuration
  8. Zuweisen von Konfigurationen zu Servern mithilfe der Computerkonfiguration

Die Computerkonfiguration verwendet DSC (Version 3) mit PowerShell (Version 7). Die DSC Version 3 kann gemeinsam mit älteren DSC-Versionen in Windows und Linux verwendet werden. Die Implementierungen sind getrennt. Es gibt jedoch keine Konflikterkennung.

Für die Computerkonfiguration ist die Veröffentlichung von Modulen oder Konfigurationen in einem Dienst oder die Kompilierung in einem Dienst nicht erforderlich. Stattdessen entwickeln und testen Sie Inhalte mit dafür vorgesehenen Tools und veröffentlichen die Inhalte überall dort, wo der Computer über HTTPS Zugriff hat (normalerweise Azure Blob Storage).

Wenn Sie beschließen, Computer für eine gewisse Zeit in beiden Diensten zu betreiben, bestehen keine technischen Hindernisse. Die beiden Optionen sind unabhängig voneinander.

Exportieren von Inhalten aus Azure Automation

Beginnen Sie mit dem Ermitteln und Exportieren von Inhalten aus Azure Automation State Configuration in eine Entwicklungsumgebung, in der Sie Inhaltspakete für die Computerkonfiguration erstellen, testen und veröffentlichen.

Configurations

Sie können Konfigurationsskripts nur aus Azure Automation exportieren. Es ist nicht möglich, Knotenkonfigurationen oder kompilierte MOF-Dateien zu exportieren. Wenn Sie MOF-Dateien direkt im Automation-Konto veröffentlicht haben und keinen Zugriff mehr auf die ursprüngliche Datei haben, müssen Sie sie aus Ihren privaten Konfigurationsskripts neu kompilieren. Wenn Sie die ursprüngliche Konfiguration nicht finden können, müssen Sie sie erneut erstellen.

Um Konfigurationsskripts aus Azure Automation zu exportieren, bestimmen Sie zunächst das Azure Automation-Konto, das die Konfigurationen und den Namen der Ressourcengruppe enthält, in der das Automation-Konto bereitgestellt wird.

Installieren Sie das PowerShell-Modul Az.Automation.

Install-Module -Name Az.Automation

Verwenden Sie als Nächstes den Befehl Get-AzAutomationAccount, um Ihre Automatisierungskonten und die Ressourcengruppe zu identifizieren, in der sie bereitgestellt werden. Die Eigenschaften ResourceGroupName und AutomationAccountName sind für die nächsten Schritte wichtig.

Get-AzAutomationAccount
SubscriptionId        : <your-subscription-id>
ResourceGroupName     : <your-resource-group-name>
AutomationAccountName : <your-automation-account-name>
Location              : centralus
State                 :
Plan                  :
CreationTime          : 6/30/2021 11:56:17 AM -05:00
LastModifiedTime      : 6/30/2021 11:56:17 AM -05:00
LastModifiedBy        :
Tags                  : {}

Ermitteln Sie die Konfigurationen in Ihrem Automation-Konto. Die Ausgabe enthält einen Eintrag pro Konfiguration. Wenn Sie viele Einträge haben, speichern Sie die Informationen als Variable, damit sie einfacher zu verwenden sind.

$getParams = @{
    ResourceGroupName     = '<your-resource-group-name>'
    AutomationAccountName = '<your-automation-account-name>'
}

Get-AzAutomationDscConfiguration @getParams
ResourceGroupName     : <your-resource-group-name>
AutomationAccountName : <your-automation-account-name>
Location              : centralus
State                 : Published
Name                  : <your-configuration-name>
Tags                  : {}
CreationTime          : 6/30/2021 12:18:26 PM -05:00
LastModifiedTime      : 6/30/2021 12:18:26 PM -05:00
Description           :
Parameters            : {}
LogVerbose            : False

Exportieren Sie abschließend jede Konfiguration mit dem Befehl Export-AzAutomationDscConfiguration in eine lokale Skriptdatei. Der resultierende Dateiname verwendet das Muster \ConfigurationName.ps1.

$exportParams = @{
    OutputFolder          = '<location-on-your-machine>'
    ResourceGroupName     = '<your-resource-group-name>'
    AutomationAccountName = '<your-automation-account-name>'
    Name                  = '<your-configuration-name>'
}
Export-AzAutomationDscConfiguration @exportParams
UnixMode   User             Group                 LastWriteTime           Size Name
--------   ----             -----                 -------------           ---- ----
                                               12/31/1600 18:09

Exportieren von Konfigurationen mithilfe der PowerShell-Pipeline

Nachdem Sie Ihre Konten und die Anzahl der Konfigurationen ermittelt haben, möchten Sie möglicherweise alle Konfigurationen in einen lokalen Ordner auf Ihrem Computer exportieren. Um diesen Prozess zu automatisieren, leiten Sie die Ausgabe der einzelnen Befehle in den vorherigen Beispielen an den nächsten Befehl weiter.

Im Beispiel werden fünf Konfigurationen exportiert. Das Ausgabemuster ist der einzige Hinweis auf Erfolg.

Get-AzAutomationAccount |
    Get-AzAutomationDscConfiguration |
    Export-AzAutomationDSCConfiguration -OutputFolder <location on your machine>
UnixMode   User             Group                 LastWriteTime           Size Name
--------   ----             -----                 -------------           ---- ----
                                               12/31/1600 18:09
                                               12/31/1600 18:09
                                               12/31/1600 18:09
                                               12/31/1600 18:09
                                               12/31/1600 18:09

Erwägen Sie, komplexe Konfigurationsdateien zu zerlegen.

Mithilfe der Computerkonfiguration lassen sich pro Computer mehrere Konfigurationen verwalten. Bei vielen Konfigurationen, die für Azure Automation State Configuration geschrieben wurden, wurde die Einschränkung der Verwaltung einer einzelnen Konfiguration pro Computer angenommen. Um die erweiterten Funktionen der Computerkonfiguration zu nutzen, können Sie große Konfigurationsdateien in viele kleinere Konfigurationen unterteilen, von denen jede ein bestimmtes Szenario verarbeitet.

In der Computerkonfiguration gibt es keine Orchestrierung, um die Sortierreihenfolge von Konfigurationen zu steuern. Fassen Sie die Schritte einer Konfiguration in einem einzelnen Paket zusammen, wenn die Schritte nacheinander ausgeführt werden müssen.

Module

Es ist nicht möglich, Module aus Azure Automation zu exportieren oder automatisch zu korrelieren, welche Konfigurationen welche Module und Versionen benötigen. Sie benötigen die Module in Ihrer lokalen Umgebung, um ein neues Computerkonfigurationspaket zu erstellen. Um eine Liste der Module zu erstellen, die Sie für die Migration benötigen, verwenden Sie PowerShell, um Azure Automation nach dem Namen und der Version der Module abzufragen.

Wenn Sie Module verwenden, die benutzerdefiniert erstellt wurden und nur in Ihrer privaten Entwicklungsumgebung vorhanden sind, ist es nicht möglich, sie aus Azure Automation zu exportieren.

Wenn Sie in Ihrer Umgebung kein benutzerdefiniertes Modul finden, das für eine Konfiguration und im Konto erforderlich ist, können Sie die Konfiguration nicht kompilieren. Daher können Sie die Konfiguration nicht migrieren.

Auflisten der in Azure Automation importierten Module

Verwenden Sie den Befehl Get-AzAutomationModule, um eine Liste aller Module abzurufen, die in Ihrem Automation-Konto installiert sind. Die Eigenschaft IsGlobal gibt an, ob das Modul für Azure Automation immer integriert ist, oder ob es im Konto veröffentlicht wurde.

Beispielsweise, um eine Liste aller Module zu erstellen, die in einem Ihrer Konten veröffentlicht wurden.

Get-AzAutomationAccount |
    Get-AzAutomationModule |
    Where-Object IsGlobal -eq $false

Sie können auch die PowerShell-Katalog verwenden, um Informationen zu Modulen zu finden, die öffentlich verfügbar sind. Im folgenden Beispiel werden die Module aufgelistet, die in neue Automation-Konten integriert sind und die DSC-Ressourcen enthalten.

Get-AzAutomationAccount |
    Get-AzAutomationModule |
    Where-Object IsGlobal -eq $true |
    Find-Module -ErrorAction SilentlyContinue |
    Where-Object {'' -ne $_.Includes.DscResource} |
    Select-Object -Property Name, Version -Unique |
    Format-Table -AutoSize
Name                       Version
----                       -------
AuditPolicyDsc             1.4.0
ComputerManagementDsc      8.4.0
PSDscResources             2.12.0
SecurityPolicyDsc          2.10.0
xDSCDomainjoin             1.2.23
xPowerShellExecutionPolicy 3.1.0.0
xRemoteDesktopAdmin        1.1.0.0

Wenn die Module aus dem PowerShell-Katalog importiert wurden, können Sie die Ausgabe von Find-Module per Pipe direkt an Install-Module weiterleiten. Das Piping der Ausgabe zwischen Befehlen bietet eine Lösung zum Laden einer Entwicklerumgebung mit allen Modulen, die sich derzeit in einem Automation-Konto befinden, falls sie im PowerShell-Katalog verfügbar sind.

Der gleiche Ansatz kann verwendet werden, um Module aus einem benutzerdefinierten NuGet-Feed zu pullen, wenn Sie den Feed in Ihrer lokalen Umgebung als PowerShellGet-Repository registriert haben.

Der Befehl Find-Module in diesem Beispiel unterdrückt keine Fehler, d. h. alle Module, die nicht im Katalog gefunden wurden, geben eine Fehlermeldung zurück.

Get-AzAutomationAccount |
    Get-AzAutomationModule |
    Where-Object IsGlobal -eq $false |
    Find-Module |
    Where-Object { '' -ne $_.Includes.DscResource } |
    Install-Module

Überprüfen von Konfigurationsskripts auf Modulanforderungen

Wenn Sie Konfigurationsskripts aus Azure Automation exportiert haben, können Sie auch den Inhalt überprüfen, um Details darüber zu erhalten, welche Module zum Kompilieren der einzelnen Konfigurationen in eine MOF-Datei erforderlich sind. Dieser Ansatz ist nur erforderlich, wenn Sie Konfigurationen in Ihren Automation-Konten finden, in denen die Module entfernt wurden. Die Konfigurationen sind für Computer nicht mehr nützlich, befinden sich aber möglicherweise noch im Konto.

Suchen Sie oben in jeder Datei nach einer Zeile, die Import-DscResource enthält. Dieser Befehl gilt nur innerhalb einer Konfiguration und wird zum Laden von Modulen zum Zeitpunkt der Kompilierung verwendet.

Die WindowsIISServerConfig-Konfiguration im PowerShell-Katalog enthält beispielsweise die Zeilen aus diesem Beispiel.

configuration WindowsIISServerConfig
{

Import-DscResource -ModuleName @{ModuleName = 'xWebAdministration';ModuleVersion = '1.19.0.0'}
Import-DscResource -ModuleName 'PSDesiredStateConfiguration'

Für die Konfiguration müssen Sie über die Version 1.19.0.0 des Moduls xWebAdministration sowie über das Modul PSDesiredStateConfiguration verfügen.

Testen von Inhalten in der Azure-Computerkonfiguration

Um zu bewerten, ob Sie Ihre Inhalte aus Azure Automation State Configuration mit „Computerkonfiguration“ verwenden können, absolvieren Sie das Schritt-für-Schritt-Tutorial auf der Seite Erstellen benutzerdefinierter Paketartefakte für „Computerkonfiguration“.

Wenn Sie den Schritt Konfiguration erstellen erreichen, sollte das Konfigurationsskript, das eine MOF-Datei generiert, eines der Skripts sein, die Sie aus Azure Automation State Configuration exportiert haben. Sie müssen die erforderlichen PowerShell-Module in Ihrer Umgebung installiert haben, bevor Sie die Konfiguration in eine MOF-Datei kompilieren und ein Computerkonfigurationspaket erstellen können.

Was geschieht, wenn ein Modul nicht mit der Computerkonfiguration funktioniert?

Bei einigen Modulen können Kompatibilitätsprobleme mit der Computerkonfiguration bestehen. Die häufigsten Probleme beziehen sich auf .NET Framework und .NET Core. Ausführliche technische Informationen finden Sie auf der Seite Unterschiede zwischen Windows PowerShell 5.1 und PowerSh.ell 7.x.

Eine Möglichkeit zum Beheben von Kompatibilitätsproblemen ist das Ausführen von Befehlen in Windows PowerShell aus einem Modul, das in PowerShell 7 importiert wird, indem powershell.exe ausgeführt wird. Sie können ein Beispielmodul, das diese Methode verwendet, im Azure-Policy-Repository überprüfen, in dem es zum Überwachen des Zustands der Windows DSC-Konfiguration verwendet wird.

Das Beispiel veranschaulicht auch einen kleinen Proof of Concept.

# example function that could be loaded from module
function New-TaskResolvedInPWSH7 {
    # runs the fictitious command 'Get-myNotCompatibleCommand' in Windows PowerShell
    $compatObject = & powershell.exe -NoProfile -NonInteractive -Command {
        Get-myNotCompatibleCommand
    }
    # resulting object can be used in PowerShell 7
    return $compatObject
}

Muss ich „Get-TargetResource“ in allen Modulen, die ich migrieren möchte, die Eigenschaft „Reasons“ (Gründe) hinzufügen?

Die Implementierung der Eigenschaft Reasons bietet eine bessere Erfahrung beim Anzeigen der Ergebnisse einer Konfigurationszuweisung im Azure-Portal. Wenn die Methode Get in einem Modul Reasons nicht enthält, wird die generische Ausgabe mit Details aus den Eigenschaften zurückgegeben, die von der Methode Get zurückgegeben werden. Daher ist es für die Migration optional.

Machines

Nachdem Sie die Inhalte aus Azure Automation State Configuration in der Computerkonfiguration getestet haben, entwickeln Sie einen Plan für die Migration von Computern.

Azure Automation State Configuration ist sowohl für virtuelle Computer in Azure als auch für Hybridcomputer außerhalb von Azure verfügbar. Sie müssen jedes dieser Szenarien mit unterschiedlichen Schritten planen.

Virtuelle Azure-Computer

Virtuelle Azure-Computer verfügen bereits über eine Ressource in Azure. Das bedeutet, dass sie für Computerkonfigurationszuweisungen bereit sind, die sie einer Konfiguration zuordnen. Die allgemeinen Aufgaben bei der Migration virtueller Azure-Computer bestehen darin, sie aus Azure Automation State Configuration zu entfernen und dann mithilfe der Computerkonfiguration Konfigurationen zuzuweisen.

Um einen Computer aus Azure Automation State Configuration zu entfernen, führen Sie die Schritte auf der Seite Entfernen einer Konfiguration und eines Knotens aus Automation State Configuration aus.

Führen Sie zum Zuweisen von Konfigurationen mithilfe der Computerkonfiguration die Schritte in den Azure Policy-Schnellstarts aus, z. B. Schnellstart: Erstellen einer Richtlinienzuweisung zum Identifizieren nicht konformer Ressourcen. Wählen Sie in Schritt 6 beim Auswählen einer Richtliniendefinition die Definition aus, die eine Konfiguration anwendet, die Sie aus Azure Automation State Configuration migriert haben.

Hybridcomputer

Computer außerhalb von Azure können für Azure Automation State Configuration registriert werden, verfügen jedoch nicht über eine Computerressource in Azure. Der Lokale Configuration Manager-Dienst (LCM) auf dem Computer handhabt die Verbindung mit Azure Automation. Der Eintrag des Knotens wird im Azure Automation-Anbietertyp als Ressource verwaltet.

Bevor Sie einen Computer aus Azure Automation State Configuration entfernen, integrieren Sie jeden Knoten als Azure Arc-fähigen Server. Das Onboarding in Azure Arc erstellt eine Computerressource in Azure, damit Azure Policy den Computer verwalten kann. Das Onboarding des Computers kann jederzeit in Azure Arc durchgeführt werden, aber Sie können Azure Automation State Configuration verwenden, um den Prozess zu automatisieren.

Problembehandlung beim Exportieren von Inhalten

Details zu bekannten Problemen finden Sie in diesem Abschnitt.

Das Exportieren von Konfigurationen bewirkt die Hinzufügung des Zeichens „\“ im Dateinamen.

Wenn Sie PowerShell unter macOS und Linux verwenden, treten möglicherweise Probleme beim Umgang mit den Dateinamen auf, die von Export-AzAutomationDSCConfiguration ausgegeben werden.

Als Problemumgehung wurde ein Modul im PowerShell-Katalog mit dem Namen AADSCConfigContent veröffentlicht. Das Modul verfügt nur über einen Befehl, der den Inhalt einer in Azure Automation gespeicherten Konfiguration exportiert, indem eine REST-Anforderung an den Dienst gestellt wird.

Nächste Schritte