Megosztás a következőn keresztül:


Az Azure Automation állapotkonfigurációja a gép konfigurációjának migrálási tervezéséhez

Feljegyzés

Az Azure Automation State Configuration 2027. szeptember 30-án megszűnik, ezért ezen a napon lépjen át az Azure Machine Configuration szolgáltatásra. További információkért lásd a blogbejegyzés bejelentését. Az Azure Machine Configuration szolgáltatás egyesíti a DSC-bővítmény, az Azure Automation State Configuration és az ügyfelek visszajelzései alapján leggyakrabban kért funkciókat. Az Azure Machine Configuration emellett az Arc-kompatibilis kiszolgálókon keresztüli hibrid gépek támogatását is tartalmazza.

A gépkonfiguráció az Azure Automation State Configuration (más néven Azure Automation Desired State Configuration vagy AADSC) által biztosított funkciók legújabb implementációja. Ha lehetséges, tervezze meg a tartalmaknak és a gépeknek az új szolgáltatásba történő áthelyezését. Ez a cikk útmutatást nyújt az Azure Automationből a gépkonfigurációra történő migrálás stratégiájának kialakításához.

A gépkonfiguráció új funkciói az ügyfelek kéréseit kezelik:

  • A konfigurációk méretkorlátjának növelése 100 MB-ra
  • Speciális jelentéskészítés az Azure Resource Graphon keresztül, beleértve az erőforrás-azonosítót és az állapotot
  • Több konfiguráció kezelése ugyanazon a gépen
  • Szabályozható, hogy a szervizelés mikor történik, amikor a gépek eltérnek a kívánt állapottól
  • PowerShell-alapú DSC-erőforrások Linuxhoz és Windowshoz egyaránt

Mielőtt hozzákezdene, érdemes elolvasni a fogalmi áttekintési információkat az Azure Policy gépkonfigurációjának oldalán.

A migrálás ismertetése

A migrálás leghatékonyabb megközelítése, ha a gépek migrálása előtt ismételten üzembe helyezzük a tartalmat. Ez a szakasz a migrálás várható lépéseit ismerteti.

  1. Konfigurációk exportálása az Azure Automationből
  2. Modulkövetelmények felderítése és betöltése a környezetbe
  3. Konfigurációk fordítása
  4. Gépkonfigurációs csomagok létrehozása és közzététele
  5. Gépkonfigurációs csomagok tesztelése
  6. Hibrid gépek előkészítése az Azure Arcba
  7. Kiszolgálók regisztrációjának törlése az Azure Automation állapotkonfigurációjából
  8. Konfigurációk hozzárendelése kiszolgálókhoz gépi konfigurációval

A gépkonfiguráció a 2. verziójú DSC-t használja a PowerShell 7-es verziójával. A DSC 3-s verziója együtt tud létezni a DSC régebbi verzióival Windowsban és Linuxon. Ezek implementációja elkülönül. Ütközésészlelés azonban nincs.

A gépkonfigurációhoz nincs szükség modulok vagy konfigurációk szolgáltatásban való közzétételére vagy egy szolgáltatásban való fordításra. Ehelyett célalapú eszközökkel fejleszthet és tesztelhet tartalmakat, és közzéteheti a tartalmat bárhol, ahová a gép elérheti a HTTPS-t (általában az Azure Blob Storage-t).

Ha úgy dönt, hogy bizonyos ideig mindkét szolgáltatásban vannak gépek, nincsenek technikai akadályok. A két szolgáltatás független egymástól.

Tartalmak exportálása az Azure Automationből

Először is fedezze fel és exportálja a tartalmat az Azure Automation State Configuration-ból egy olyan fejlesztési környezetbe, ahol tartalomcsomagokat hozhat létre, tesztelhet és tehet közzé a gépkonfigurációhoz.

Konfigurációk

Konfigurációs szkripteket csak az Azure Automationből exportálhat. Csomópontkonfigurációk és lefordított MOF-fájlok nem exportálhatók. Ha közvetlenül az Automation-fiókban tette közzé az MOF-fájlokat, és már nem fér hozzá az eredeti fájlhoz, újra kell komplikálást elvégeznie a privát konfigurációs szkriptekből. Ha nem találja az eredeti konfigurációt, újra meg kell adnia.

A konfigurációs szkriptek Azure Automationből való exportálásához először azonosítsa a konfigurációkat tartalmazó Azure Automation-fiókot, valamint annak az erőforráscsoportnak a nevét, amelyben az Automation-fiók telepítve van.

Telepítse az Az.Automation PowerShell-modult.

Install-Module -Name Az.Automation

Ezután a Get-AzAutomationAccount paranccsal azonosíthatja az Automation-fiókokat és azt az erőforráscsoportot, ahol üzembe helyezték őket. A ResourceGroupName és az AutomationAccountName tulajdonságok fontosak a következő lépésekhez.

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

Ismerje meg az Automation-fiók konfigurációit. A kimenet konfigurációnként egy bejegyzéssel rendelkezik. Ha sok van, tárolja az információkat változóként, így könnyebben kezelhető.

$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

Végül exportálja az egyes konfigurációk egy helyi szkriptfájlba a parancs használatával Export-AzAutomationDscConfiguration. Az eredményként kapott fájlnév a mintát \ConfigurationName.ps1használja.

$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

Konfigurációk exportálása a PowerShell-folyamat használatával

Az összes konfigurációt exportálhatja a számítógép egy helyi mappájába. A folyamat automatizálásához a korábbi példákban szereplő parancsok kimenetét a következő parancsra kell átirányítani.

Az alábbi példa öt konfigurációt exportál. A sikeresség egyetlen mutatója a kimeneti minta.

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

Fontolja meg az összetett konfigurációs fájlok felbontását

A gép konfigurációja gépenként több konfigurációt is képes kezelni. Az Azure Automation State Configuration-hoz írt számos konfiguráció feltételezte, hogy gépenként egyetlen konfigurációt kell kezelni. A gépkonfiguráció által kínált kibővített képességek kihasználásához a nagy konfigurációs fájlokat számos kisebb konfigurációra oszthatja, amelyek mindegyike egy adott forgatókönyvet kezel.

A gépkonfigurációban nincs vezénylés a konfigurációk rendezési sorrendjének szabályozásához. A konfiguráció lépéseit egy csomagban tárolhatja, ha egymás után kell végrehajtania őket.

Modulok

Nem lehet modulokat exportálni az Azure Automationből, és nem lehet automatikusan korrelálni, hogy mely konfigurációkhoz melyik modulra és verzióra van szükség. Új gépkonfigurációs csomag létrehozásához a moduloknak a helyi környezetben kell lenniük. A migráláshoz szükséges modulok listájának létrehozásához a PowerShell használatával kérdezheti le az Azure Automationt a modulok nevére és verziójára vonatkozóan.

Ha egyénileg létrehozott modulokat használ, és csak a magánfejlesztési környezetben létezik, nem exportálhatóak az Azure Automationből.

Ha hiányzik egy konfigurációhoz szükséges modul, és a fiókban nem tudja lefordítani a konfigurációt. Ezért nem migrálhatja a konfigurációt.

Az Azure Automationben importált modulok listázása

Az automation-fiókban telepített összes modul listájának lekéréséhez használja a Get-AzAutomationModule parancsot. Az IsGlobal tulajdonság jelzi, hogy a modul mindig az Azure Automationbe van-e beépítve, vagy közzé lett-e téve a fiókban.

Létrehozhat például egy listát az összes, bármelyik fiókban közzétett modulról.

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

A PowerShell-galéria a nyilvánosan elérhető modulok részleteinek megkereséséhez is használhatja. Az alábbi példa az új Automation-fiókokba beépített és DSC-erőforrásokat tartalmazó modulokat sorolja fel.

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

Ha a modulokat a PowerShell-galéria importálta, a kimenetet Find-Module közvetlenül a következőre Install-Moduleadhatja. A kimenet parancsok közötti pipálása megoldást kínál egy fejlesztői környezet betöltésére az Automation-fiók összes moduljával, ha azok elérhetők a PowerShell-galéria.

Ugyanezzel a módszerrel is lekérheti a modulokat egy egyéni NuGet-hírcsatornából. A hírcsatornát a helyi környezetben PowerShellGet-adattárként kell regisztrálnia.

A Find-Module példában szereplő parancs nem tiltja le a hibákat, vagyis a katalógusban nem található modulok hibaüzenetet adnak vissza.

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

Konfigurációs szkriptek vizsgálata modulkövetelmények esetén

Miután exportálta a konfigurációs szkripteket az Azure Automationből, áttekintheti az egyes konfigurációk MOF-fájlba való fordításához szükséges modulok tartalmát. Erre a megközelítésre csak akkor van szükség, ha olyan konfigurációkat talál az Automation-fiókokban, amelyekből hiányoznak modulok. A konfigurációk már nem lennének hasznosak a gépek számára, de előfordulhat, hogy még mindig a fiókban vannak.

Az egyes fájlok tetején keresse meg azokat a sorokat, amelyek tartalmazzák azokat Import-DscResource. Ez a parancs csak egy konfiguráción belül alkalmazható, és a modulok fordításkor való betöltésére szolgál.

A PowerShell-galéria konfigurációjában például WindowsIISServerConfig vannak a példában szereplő sorok.

configuration WindowsIISServerConfig
{

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

A konfigurációhoz az xWebAdministration modul 1.19.0.0-s verziójával és a PSDesiredStateConfiguration modullal kell rendelkeznie.

Tartalom tesztelése az Azure-beli gép konfigurációjában

Annak kiértékeléséhez, hogy használhatja-e a tartalmat az Azure Automation State Configurationből a gépkonfigurációhoz, kövesse az egyéni gépkonfigurációs csomagösszetevők létrehozásának részletes oktatóanyagát.

Amikor eléri a Konfiguráció létrehozása lépést, az MOF-fájlt létrehozó konfigurációs szkriptnek az Azure Automation State Configuration szolgáltatásból exportált szkriptek egyike kell legyen. A konfiguráció MOF-fájlba való fordítása és gépkonfigurációs csomag létrehozása előtt telepítenie kell a szükséges PowerShell-modulokat a környezetben.

Mi a teendő, ha egy modul nem működik a gép konfigurációjával?

Egyes modulok kompatibilitási problémákat tapasztalhatnak a gépkonfigurációval kapcsolatban. A leggyakoribb problémák a .NET-keretrendszerhez és a .NET Core-hoz kapcsolódnak. Részletes műszaki információk érhetők el a lapon, a Windows PowerShell 5.1 és a PowerShell 7.x közötti különbségekről.

A kompatibilitási problémák megoldásához futtathat parancsokat a Windows PowerShellben a PowerShell 7-ben importált modulból, és futtassa a parancsokat powershell.exe. Áttekinthet egy mintamodult, amely ezt a technikát használja az Azure-Policy adattárban, ahol a Windows DSC-konfiguráció állapotának naplózására szolgál.

A példa egy kis fogalmi bizonyítékot is szemléltet.

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

Hozzá kell adnom az Okok tulajdonságot a Get-TargetResource-hoz az összes migrálandó modulban?

Az Okok tulajdonság implementálása jobb élményt nyújt egy konfigurációs hozzárendelés eredményeinek az Azure Portalról való megtekintésekor. Ha a Get modul metódusa nem tartalmaz okokat, a rendszer az általános kimenetet a metódus által Get visszaadott tulajdonságok részleteivel adja vissza. Ezért a migráláshoz nem kötelező.

Gépek

Az Azure Automation State Configuration az Azure-beli virtuális gépekhez és az Azure-on kívüli hibrid gépekhez is elérhető. Ezeket a forgatókönyveket különböző lépésekkel kell megterveznie.

Azure-beli virtuális gépek

Az Azure-beli virtuális gépek már rendelkeznek erőforrással az Azure-ban, ami azt jelenti, hogy készen állnak a konfigurációhoz társított gépkonfigurációs hozzárendelésekre. Az Azure-beli virtuális gépek migrálásának magas szintű feladata, hogy eltávolítsa őket az Azure Automation State Configuration-ból, majd gépkonfigurációval rendeljen hozzá konfigurációkat.

Ha el szeretne távolítani egy gépet az Azure Automation State Configuration szolgáltatásból, kövesse a Konfiguráció és csomópont eltávolítása az Automation State Configuration szolgáltatásból című lapon található lépéseket.

A konfigurációk gépi konfigurációval való hozzárendeléséhez kövesse az Azure Policy rövid útmutatóinak lépéseit, például a rövid útmutatót: Szabályzat-hozzárendelés létrehozása a nem megfelelő erőforrások azonosításához. A 6. lépésben, amikor kiválaszt egy szabályzatdefiníciót, válassza ki azt a definíciót, amely az Azure Automation State Configuration szolgáltatásból migrált konfigurációt alkalmazza.

Hibrid gépek

Az Azure-on kívüli gépek regisztrálhatók az Azure Automation State Configuration szolgáltatásban, de nincs gépi erőforrásuk az Azure-ban. A gépen található Local Configuration Manager (LCM) szolgáltatás kezeli az Azure Automationhez való kapcsolatot. A csomópont rekordja erőforrásként van kezelve az Azure Automation-szolgáltató típusában.

Mielőtt eltávolítaná a gépet az Azure Automation State Configuration-ból, minden csomópontot Azure Arc-kompatibilis kiszolgálóként kell létrehoznia. Az Azure Arcra való előkészítés létrehoz egy gépi erőforrást az Azure-ban, hogy az Azure Policy felügyelhesse a gépet. A gép bármikor előkészíthető az Azure Arcba, de az Azure Automation State Configuration használatával automatizálhatja a folyamatot.

Tartalmak exportálásával kapcsolatos hibák elhárítása

Az ismert problémák részleteit ebben a szakaszban találja.

A konfigurációk exportálása "\" karaktert eredményez a fájlnévben

Ha macOS és Linux rendszeren használja a PowerShellt, problémákat tapasztalhat a fájlnevek kimenetének kezelésekor Export-AzAutomationDSCConfiguration.

Áthidaló megoldásként telepítse az AADSCConfigContent modult a PowerShell-galéria. A modul egy olyan paranccsal rendelkezik, amely az Azure Automationben tárolt konfiguráció tartalmát egy REST-kérés szolgáltatásba történő küldésével exportálja.

Következő lépések