Share via


Azure Automation-statusconfiguratie naar migratieplanning voor machineconfiguratie

Machineconfiguratie is de nieuwste implementatie van functionaliteit die is geleverd door Azure Automation State Configuration (ook wel Bekend als Azure Automation Desired State Configuration of AADSC). Indien mogelijk maakt u een planning om uw inhoud en machines naar de nieuwe service te verplaatsen. Dit artikel bevat richtlijnen voor het ontwikkelen van een strategie voor de migratie van Azure Automation naar machineconfiguratie.

Nieuwe functies in de configuratie van de machine verwerken klantaanvragen:

  • Hogere groottelimiet voor configuraties tot 100 MB
  • Geavanceerde rapportage via Azure Resource Graph, inclusief resource-id en status
  • Meerdere configuraties voor dezelfde machine beheren
  • Wanneer machines van de gewenste status afdrijven, bepaalt u wanneer herstel plaatsvindt
  • Linux en Windows verbruiken beide DSC-resources op basis van PowerShell

Voordat u begint, is het een goed idee om de conceptuele overzichtsinformatie te lezen op de pagina met de machineconfiguratie van Azure Policy.

Inzicht in migratie

De beste methode voor migratie is om eerst inhoud opnieuw te implementeren en vervolgens machines te migreren. In deze sectie worden de verwachte stappen voor migratie beschreven.

  1. Configuraties exporteren vanuit Azure Automation
  2. Modulevereisten detecteren en laden in uw omgeving
  3. Configuraties compileren
  4. Configuratiepakketten voor machines maken en publiceren
  5. Configuratiepakketten voor machines testen
  6. Hybride machines onboarden naar Azure Arc
  7. Registratie van servers bij Azure Automation State Configuration ongedaan maken
  8. Configuraties toewijzen aan servers met behulp van computerconfiguratie

Machineconfiguratie maakt gebruik van DSC-versie 3 met PowerShell versie 7. DSC-versie 3 kan naast oudere versies van DSC in Windows en Linux bestaan. De implementaties zijn gescheiden. Er is echter geen conflictdetectie.

Machineconfiguratie vereist geen publicatiemodules of configuraties in een service of compileren in een service. In plaats daarvan ontwikkelt en test u inhoud met behulp van speciaal ontworpen hulpprogramma's en publiceert u de inhoud overal waar de computer https kan bereiken (meestal Azure Blob Storage).

Als u besluit om machines in beide services gedurende een bepaalde periode te hebben, zijn er geen technische barrières. De twee services zijn onafhankelijk.

Inhoud exporteren vanuit Azure Automation

Begin met het detecteren en exporteren van inhoud uit Azure Automation State Configuration in een ontwikkelomgeving waarin u inhoudspakketten voor machineconfiguratie maakt, test en publiceert.

Configuraties

U kunt configuratiescripts alleen exporteren vanuit Azure Automation. Het is niet mogelijk om knooppuntconfiguraties of gecompileerde MOF-bestanden te exporteren. Als u MOF-bestanden rechtstreeks in het Automation-account hebt gepubliceerd en geen toegang meer hebt tot het oorspronkelijke bestand, moet u opnieuw compileren vanuit uw persoonlijke configuratiescripts. Als u de oorspronkelijke configuratie niet kunt vinden, moet u deze opnieuw controleren.

Als u configuratiescripts wilt exporteren uit Azure Automation, identificeert u eerst het Azure Automation-account met de configuraties en de naam van de resourcegroep waarin het Automation-account is geïmplementeerd.

Installeer de PowerShell-module Az.Automation.

Install-Module -Name Az.Automation

Gebruik vervolgens de Get-AzAutomationAccount opdracht om uw Automation-accounts en de resourcegroep te identificeren waar ze worden geïmplementeerd. De eigenschappen ResourceGroupName en AutomationAccountName zijn belangrijk voor de volgende stappen.

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                  : {}

Ontdek de configuraties in uw Automation-account. De uitvoer heeft één vermelding per configuratie. Als u veel hebt, slaat u de informatie op als een variabele, zodat u gemakkelijker kunt werken.

$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

Ten slotte exporteert u elke configuratie naar een lokaal scriptbestand met behulp van de opdracht Export-AzAutomationDscConfiguration. De resulterende bestandsnaam maakt gebruik van het patroon \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

Configuraties exporteren met behulp van de PowerShell-pijplijn

Nadat u uw accounts en het aantal configuraties hebt gedetecteerd, wilt u mogelijk alle configuraties exporteren naar een lokale map op uw computer. Als u dit proces wilt automatiseren, geeft u de uitvoer van elke opdracht in de eerdere voorbeelden door aan de volgende opdracht.

In het voorbeeld worden vijf configuraties geëxporteerd. Het uitvoerpatroon is de enige indicator van succes.

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

Overweeg complexe configuratiebestanden op te vouwen

Machineconfiguratie kan meer dan één configuratie per machine beheren. Veel configuraties die zijn geschreven voor Azure Automation State Configuration, hebben ervan uitgegaan dat er één configuratie per machine wordt beheerd. Als u wilt profiteren van de uitgebreide mogelijkheden die worden geboden door machineconfiguratie, kunt u grote configuratiebestanden verdelen in veel kleinere configuraties waarbij elk een specifiek scenario verwerkt.

Er is geen indeling in de machineconfiguratie om de volgorde van de sortering van configuraties te bepalen. Bewaar stappen in een configuratie in één pakket als ze opeenvolgend moeten worden uitgevoerd.

Modules

Het is niet mogelijk om modules uit Azure Automation te exporteren of automatisch te correleren welke configuraties vereisen welke modules en versies. De modules moeten zich in uw lokale omgeving bevinden om een nieuw machineconfiguratiepakket te kunnen maken. Als u een lijst met modules wilt maken die u nodig hebt voor migratie, gebruikt u PowerShell om een query uit te voeren op Azure Automation voor de naam en versie van modules.

Als u modules gebruikt die zijn gemaakt en alleen aanwezig zijn in uw privéontwikkelingsomgeving, is het niet mogelijk om ze te exporteren vanuit Azure Automation.

Als u geen aangepaste module kunt vinden in uw omgeving die vereist is voor een configuratie en in het account, kunt u de configuratie niet compileren. Daarom kunt u de configuratie niet migreren.

Modules weergeven die zijn geïmporteerd in Azure Automation

Gebruik de Get-AzAutomationModule opdracht om een lijst op te halen met alle modules die zijn geïnstalleerd in uw Automation-account. De eigenschap IsGlobal geeft aan of de module altijd is ingebouwd in Azure Automation of dat deze is gepubliceerd naar het account.

Als u bijvoorbeeld een lijst wilt maken met alle modules die zijn gepubliceerd naar een van uw accounts.

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

U kunt de PowerShell Gallery ook gebruiken als hulpmiddel bij het vinden van details over modules die openbaar beschikbaar zijn. In het volgende voorbeeld worden de modules weergegeven die zijn ingebouwd in nieuwe Automation-accounts en DSC-resources bevatten.

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

Als de modules zijn geïmporteerd uit de PowerShell Gallery, kunt u de uitvoer rechtstreeks naar Find-ModuleInstall-Module. Het uitvoeren van de uitvoer in opdrachten biedt een oplossing voor het laden van een ontwikkelomgeving met alle modules die zich momenteel in een Automation-account bevinden als deze beschikbaar zijn in de PowerShell Gallery.

U kunt dezelfde methode gebruiken om modules op te halen uit een aangepaste NuGet-feed als u de feed in uw lokale omgeving hebt geregistreerd als een PowerShellGet-opslagplaats.

De Find-Module opdracht in dit voorbeeld onderdrukt geen fouten, wat betekent dat modules die niet in de galerie zijn gevonden, een foutbericht retourneren.

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

Configuratiescripts controleren op modulevereisten

Als u configuratiescripts van Azure Automation hebt geëxporteerd, kunt u ook de inhoud bekijken voor meer informatie over welke modules nodig zijn om elke configuratie te compileren naar een MOF-bestand. Deze methode is alleen nodig als u configuraties vindt in uw Automation-accounts waar de modules zijn verwijderd. De configuraties zijn niet langer nuttig voor computers, maar ze bevinden zich mogelijk nog steeds in het account.

Zoek boven aan elk bestand naar een regel die het bestand bevat Import-DscResource. Deze opdracht is alleen van toepassing in een configuratie en wordt gebruikt om modules te laden op het moment van compilatie.

De configuratie in de PowerShell Gallery bevat bijvoorbeeld WindowsIISServerConfig de regels in dit voorbeeld.

configuration WindowsIISServerConfig
{

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

Voor de configuratie moet u beschikken over de module xWeb Beheer versie 1.19.0.0 en de module PSDesiredStateConfiguration.

Inhoud testen in azure-machineconfiguratie

Als u wilt evalueren of u uw inhoud van Azure Automation State Configuration met machineconfiguratie kunt gebruiken, volgt u de stapsgewijze zelfstudie op de pagina Aangepaste machineconfiguratiepakketartefacten maken.

Wanneer u bij de stap Een configuratie maakt, moet het configuratiescript waarmee een MOF-bestand wordt gegenereerd een van de scripts zijn die u hebt geëxporteerd vanuit Azure Automation State Configuration. U moet de vereiste PowerShell-modules in uw omgeving hebben geïnstalleerd voordat u de configuratie kunt compileren naar een MOF-bestand en een machineconfiguratiepakket kunt maken.

Wat gebeurt er als een module niet werkt met de machineconfiguratie?

Sommige modules kunnen compatibiliteitsproblemen hebben met de computerconfiguratie. De meest voorkomende problemen zijn gerelateerd aan .NET Framework versus .NET Core. Gedetailleerde technische informatie is beschikbaar op de pagina, Verschillen tussen Windows PowerShell 5.1 en PowerShell 7.x.

Een optie om compatibiliteitsproblemen op te lossen, is door opdrachten uit te voeren in Windows PowerShell vanuit een module die in PowerShell 7 wordt geïmporteerd, door uit te voeren powershell.exe. U kunt een voorbeeldmodule bekijken die gebruikmaakt van deze techniek in de Azure Policy-opslagplaats waar deze wordt gebruikt om de status van De Windows DSC-configuratie te controleren.

In het voorbeeld ziet u ook een klein conceptvoorbeeld.

# 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
}

Moet ik de eigenschap Redenen toevoegen aan Get-TargetResource in alle modules die ik migreer?

Het implementeren van de eigenschap Redenen biedt een betere ervaring bij het weergeven van de resultaten van een configuratietoewijzing vanuit Azure Portal. Als de Get methode in een module geen redenen bevat, wordt algemene uitvoer geretourneerd met details van de eigenschappen die door de Get methode worden geretourneerd. Daarom is het optioneel voor migratie.

Computers

Nadat u klaar bent met het testen van inhoud van Azure Automation State Configuration in de machineconfiguratie, ontwikkelt u een plan voor het migreren van machines.

Azure Automation State Configuration is beschikbaar voor virtuele machines in Azure en hybride machines die zich buiten Azure bevinden. U moet voor elk van deze scenario's plannen met behulp van verschillende stappen.

Azure-VM's

Virtuele Azure-machines hebben al een resource in Azure, wat betekent dat ze gereed zijn voor machineconfiguratietoewijzingen die deze aan een configuratie koppelen. De taken op hoog niveau voor het migreren van virtuele Azure-machines zijn om ze te verwijderen uit Azure Automation State Configuration en vervolgens configuraties toe te wijzen met behulp van machineconfiguratie.

Als u een machine uit Azure Automation State Configuration wilt verwijderen, volgt u de stappen op de pagina Een configuratie en knooppunt verwijderen uit Automation State Configuration.

Als u configuraties wilt toewijzen met behulp van computerconfiguratie, volgt u de stappen in de quickstarts van Azure Policy, zoals Quickstart: Een beleidstoewijzing maken om niet-compatibele resources te identificeren. Kies in stap 6 bij het selecteren van een beleidsdefinitie de definitie die een configuratie toepast die u hebt gemigreerd vanuit Azure Automation State Configuration.

Hybride machines

Machines buiten Azure kunnen worden geregistreerd bij Azure Automation State Configuration, maar ze hebben geen machineresource in Azure. De LCM-service (Local Configuration Manager) op de computer verwerkt de verbinding met Azure Automation. De record van het knooppunt wordt beheerd als een resource in het type Azure Automation-provider.

Voordat u een machine verwijdert uit Azure Automation State Configuration, moet u elk knooppunt onboarden als een server met Azure Arc. Onboarding naar Azure Arc maakt een machineresource in Azure, zodat Azure Policy de machine kan beheren. De machine kan op elk gewenst moment worden geïmplementeerd in Azure Arc, maar u kunt Azure Automation State Configuration gebruiken om het proces te automatiseren.

Problemen oplossen bij het exporteren van inhoud

In deze sectie vindt u meer informatie over bekende problemen.

Het exporteren van configuraties resulteert in '\' in bestandsnaam

Wanneer u PowerShell gebruikt in macOS en Linux, hebt u mogelijk problemen met de uitvoer Export-AzAutomationDSCConfigurationvan de bestandsnamen.

Als tijdelijke oplossing is een module gepubliceerd naar de PowerShell Gallery met de naam AADSCConfigContent. De module heeft slechts één opdracht, waarmee de inhoud van een configuratie die is opgeslagen in Azure Automation, wordt geëxporteerd door een REST-aanvraag naar de service te verzenden.

Volgende stappen

  • Een aangepast machineconfiguratiepakket ontwikkelen.
  • Gebruik de GuestConfiguration-module om een Azure Policy-definitie te maken voor beheer op schaal van uw omgeving.
  • [Wijs uw aangepaste beleidsdefinitie toe] [20] met behulp van Azure Portal.
  • Meer informatie over het weergeven van [nalevingsdetails voor machineconfiguratie][21] beleidstoewijzingen.