A Gépkonfigurációhoz használt PowerShell kívánt állapotkonfiguráció viselkedésének változásai
Mielőtt hozzákezdene, érdemes elolvasni a gépkonfiguráció áttekintését.
A dokumentumról videós útmutató érhető el.
A gépkonfiguráció a PowerShell Desired State Configuration (PSDSC) 3-as verzióját használja a gépek naplózásához és konfigurálásához. A DSC-konfiguráció határozza meg a gép állapotát. A DSC gépkonfigurációban való implementálásában számos jelentős különbség van.
A gép konfigurációja a PowerShell 7 platformfüggetlen verzióját használja
A gépkonfiguráció úgy lett kialakítva, hogy a Windows és a Linux kezelésének élménye konzisztens legyen. Mindkét operációsrendszer-környezetben a PowerShell DSC-ismeretekkel rendelkező felhasználók szkriptelési ismeretekkel hozhatnak létre és tehetnek közzé konfigurációkat.
A gépkonfiguráció csak a PowerShell DSC 3-as verzióját használja, és nem támaszkodik a Linuxhoz készült DSC korábbi implementációjára vagy az nx*
adattárban található szolgáltatókra.
Az 1.26.33-as verziótól a gépkonfiguráció a WindowsHoz készült PowerShell 7.1.2-ben és a Linuxhoz készült PowerShell 7.2 preview 6-ban működik. A 7.2-es verziótól kezdve a PSDesiredStateConfiguration modul átkerült a PowerShell-telepítésbe, és ehelyett modulként lett telepítve a PowerShell-galéria.
Több konfiguráció
A gépkonfiguráció több konfigurációt is támogat ugyanahhoz a géphez. A gépkonfigurációs bővítmény operációs rendszerében nincs szükség speciális lépésekre. Nincs szükség részleges konfigurációk konfigurálására.
A függőségek kezelése konfigurációnként
Ha a konfiguráció az elérhető eszközökkel van csomagolva, a konfigurációhoz szükséges függőségek egy .zip
fájlban jelennek meg. A gépek minden konfigurációhoz egy egyedi mappába bontják ki a tartalmat. A gép konfigurációs bővítménye által szállított ügynök minden konfigurációhoz létrehoz egy dedikált PowerShell-munkamenetet. Az automatikus modulbetöltést $Env:PSModulePath
csak arra az útvonalra korlátozza, ahol a csomagot kinyerték.
Ez a változás több előnnyel is jár:
- Az egyes konfigurációkhoz különböző modulverziók használhatók ugyanazon a gépen.
- Ha már nincs szükség konfigurációra egy gépen, az ügynök biztonságosan törli a teljes mappát, ahol a konfiguráció ki lett nyerve. Nem kell a konfigurációk közötti megosztott függőségeket kezelnie.
- Nem szükséges egy központi szolgáltatásban lévő modul több verziójának kezelése.
Az összetevők csomagként vannak kezelve
Az Azure Automation Állapotkonfiguráció funkciója tartalmazza a modulok és a konfigurációs szkriptek összetevő-kezelését. Miután mindkettőt közzétette a szolgáltatásban, a szkript MOF formátumúra fordítható. A Windows Pull Serverhez hasonlóan a webszolgáltatás-példány konfigurációinak és moduljainak felügyeletére is szükség volt. Ezzel szemben a DSC-bővítmény egyszerűsített modellel rendelkezik, amelyben az összes összetevő össze van csomagolva, és egy HTTPS-kéréssel elérhető helyen tárolja a célgépről. Az Azure Blob Storage az összetevők üzemeltetésének népszerű lehetősége.
A gépkonfiguráció csak az egyszerűsített modellt használja, ahol az összes összetevő össze van csomagolva, és a célgépről https-en keresztül érhető el. Nem szükséges modulokat, szkripteket vagy fordítást közzétenni a szolgáltatásban. Az egyik változás az, hogy a csomagnak mindig tartalmaznia kell egy lefordított MOF-t. Nem lehet szkriptfájlt belefoglalni a csomagba, és lefordítani a célszámítógépen.
Egyéni konfigurációs csomag maximális mérete
Az Azure Automation State Configuration esetében a DSC-konfigurációk mérete korlátozott volt. A gép konfigurációja 100 MB-os csomagméretet támogat a tömörítés előtt. A csomagban lévő MOF-fájl méretének nincs konkrét korlátja.
A konfigurációs mód a csomagösszetevőben van beállítva
A konfigurációs csomag létrehozásakor a mód a következő beállításokkal van beállítva:
Audit
- Ellenőrzi a gép megfelelőségét. Nincs módosítás.AuditandSet
- Ellenőrzi és orvosolja a gép megfelelőségi állapotát. A módosítások akkor történnek, ha a gép nem megfelelő.
A mód nem a Local Configuration Manager szolgáltatásban, hanem a csomagban van beállítva, mert az egyes konfigurációk eltérő módban alkalmazhatók.
Paramétertámogatás az Azure Resource Manageren keresztül
A konfigurációparaméter tulajdonságtömb által a gép konfigurációs hozzárendeléseiben beállított paraméterek felülírják a statikus szöveget egy konfigurációs MOF-fájlban, amikor a fájlt egy gépen tárolják. A paraméterek lehetővé teszik a testreszabást, az operátor pedig a szolgáltatás API módosításainak vezérlését anélkül, hogy parancsokat kellene futtatnia a gépen.
Az Azure Policy azon paramétereinek, amelyek értékeket adnak át a gép konfigurációs hozzárendeléseinek, sztring típusúnak kell lenniük. A tömbök nem továbbíthatóak paramétereken keresztül, még akkor sem, ha a DSC-erőforrás támogatja a tömböket.
Triggerkészlet külső gépről
A DSC korábbi verzióinak egyik kihívása az elsodródás nagy léptékű javítása volt, anélkül, hogy sok egyéni kód és a WinRM távoli kapcsolatokra támaszkodtak volna. A vendégkonfiguráció megoldja ezt a problémát. A gépkonfiguráció felhasználói az igény szerinti szervizelésen keresztül szabályozhatják az elsodródás korrekcióját.
A sorrend tartalmazza a Get metódust
Amikor a gép konfigurációja naplóz vagy konfigurál egy gépet, a rendszer ugyanazt az eseménysorozatot használja Windows és Linux rendszeren is. A viselkedés jelentős változása, hogy a szolgáltatás meghívja a Get
metódust a gép állapotának részleteinek visszaadására.
- Az ügynök először futtatja
Test
annak megállapítását, hogy a konfiguráció megfelelő állapotban van-e. - Ha a csomag be van állítva
Audit
, a függvény által visszaadott logikai érték határozza meg, hogy a vendég-hozzárendelésCompliant
Azure Resource Manager-állapota legyen vagyNonCompliant
. - Ha a csomag be van állítva
AuditandSet
, a logikai érték határozza meg, hogy a gép szervizelése a konfiguráció metódussal történő alkalmazásávalSet
történik-e. Ha aTest
metódus visszatér$false
,Set
fut. HaTest
visszaadja,$true
akkorSet
nem fut. - Végül a szolgáltató az egyes beállítások aktuális állapotát adja
Get
vissza, így a részletek mind arról érhetők el, hogy a gép miért nem megfelelő, és hogy ellenőrizze, hogy az aktuális állapot megfelelő-e.
A Get speciális követelményei
A DSC Get
metódus speciális követelményekkel rendelkezik a gépkonfigurációhoz, amelyekre nincs szükség a DSC-hez.
- A visszaadott kivonattáblának tartalmaznia kell egy Ok nevű tulajdonságot.
- Az Okok tulajdonságnak tömbnek kell lennie.
- A tömb minden elemének egy Kód és kifejezés nevű kulcsokat tartalmazó kivonattáblának kell lennie.
- A kivonattáblától eltérő értékeket nem lehet visszaadni.
A szolgáltatás az Reasons tulajdonságot használja a megfelelőségi információk megjelenítési módjának egységesítésére. Az okokban szereplő egyes elemeket üzenetként tekintheti az erőforrás megfelelőségéről vagy nem megfelelőségéről. A tulajdonság egy tömb, mert egy erőforrás több okból is nem felel meg a megfelelőségnek.
A kód és kifejezés tulajdonságokat a szolgáltatás elvárja. Egyéni erőforrás létrehozásakor állítsa be azt a szöveget, amely miatt az erőforrás nem felel meg a Kifejezés értékének. A kód speciális formázási követelményekkel rendelkezik, így a jelentéskészítés egyértelműen megjelenítheti a naplózáshoz használt erőforrás adatait. Ez a megoldás bővíthetővé teszi a vendégkonfigurációt. Bármelyik parancs futtatható mindaddig, amíg a kimenet sztringértékként visszaadható a Kifejezés tulajdonsághoz.
- Kód (sztring): Az erőforrás neve ismétlődő, majd egy rövid név, amelynek nincs szóköze azonosítóként. Ezt a három értéket szóköz nélkül kell kettősponttal elválasztani.
- Ilyen például a
registry:registry:keynotpresent
- Ilyen például a
- Kifejezés (sztring): Emberi olvasásra alkalmas szöveg, amely elmagyarázza, miért nem felel meg a beállításnak.
- Ilyen például a
The registry key $key isn't present on the machine.
- Ilyen például a
$reasons = @()
$reasons += @{
Code = 'Name:Name:ReasonIdentifer'
Phrase = 'Explain why the setting is not compliant'
}
return @{
reasons = $reasons
}
Amikor parancssori eszközöket használ a visszaadott Get
információk lekéréséhez, előfordulhat, hogy az eszköz nem várt kimenetet ad vissza. Annak ellenére, hogy a kimenetet a PowerShellben rögzíti, előfordulhat, hogy a kimenet szabványos hibára is íródott. A probléma elkerülése érdekében fontolja meg a kimenet null értékűre való átirányítását.
Az Okok tulajdonság beágyazott osztálya
Szkriptalapú erőforrásokban (csak Windows rendszeren) az Okok osztály az alábbiak szerint szerepel a séma MOF-fájljában.
[ClassVersion("1.0.0.0")]
class Reason
{
[Read] String Phrase;
[Read] String Code;
};
[ClassVersion("1.0.0.0"), FriendlyName("ResourceName")]
class ResourceName : OMI_BaseResource
{
[Key, Description("Example description")] String Example;
[Read, EmbeddedInstance("Reason")] String Reasons[];
};
Az osztályalapú erőforrásokban (Windows és Linux) az Ok osztály az alábbiak szerint szerepel a PowerShell-modulban. A Linux kis- és nagybetűkre érzékeny, ezért a C
be Code
és P
a be Phrase
értékét nagybetűsen kell megadni.
enum ensure {
Absent
Present
}
class Reason {
[DscProperty()]
[string] $Code
[DscProperty()]
[string] $Phrase
}
[DscResource()]
class Example {
[DscProperty(Key)]
[ensure] $ensure
[DscProperty()]
[Reason[]] $Reasons
[Example] Get() {
# return current current state
}
[void] Set() {
# set the state
}
[bool] Test() {
# check whether state is correct
}
}
Ha az erőforrás rendelkezik szükséges tulajdonságokkal, ezeket a tulajdonságokat az Ok osztálysal párhuzamosan is vissza kell adniGet
. Ha az ok nem szerepel a szolgáltatásban, a szolgáltatás tartalmaz egy "catch-all" viselkedést, amely összehasonlítja a bemeneti Get
értékeket és a visszaadott Get
értékeket, és részletes összehasonlítást biztosít okként.
Konfigurációnevek
Az egyéni konfiguráció nevének mindenhol konzisztensnek kell lennie. Ezeknek az elemeknek ugyanazzal a névvel kell rendelkezniük:
- A
.zip
tartalomcsomag fájlja - A konfiguráció neve az MOF-fájlban
- A gép konfigurációs hozzárendelésének neve az Azure Resource Manager-sablonban
Parancsok futtatása a Windows PowerShellben
A Windows-modulok PowerShellben való futtatása az alábbi mintával érhető el a DSC-erőforrásokban. Az alábbi minta ideiglenesen a Windows PowerShell futtatását állítja be PSModulePath
a PowerShell helyett a Windows PowerShellben elérhető szükséges modulok felderítéséhez. Ez a minta egy kódrészlet, amely a biztonságos webkiszolgáló beépített DSC-erőforrásában használt DSC-erőforrásból van adaptálva.
Ez a minta ideiglenesen beállítja a PowerShell végrehajtási útvonalát a Windows PowerShellből való futtatáshoz, és felderíti a szükséges parancsmagot, amely ebben az esetben a Get-WindowsFeature
. A rendszer visszaadja a parancs kimenetét, majd szabványosította a kompatibilitási követelményeket. A parancsmag végrehajtása $env:PSModulePath
után a rendszer visszaállítja az eredeti elérési utat.
# The Get-WindowsFeature cmdlet needs to be run through Windows PowerShell
# rather than through PowerShell, which is what the Policy engine runs.
$null = Invoke-Command -ScriptBlock {
param ([string]$FileName)
$InitialPSModulePath = $env:PSModulePath
$WindowsPSFolder = "$env:SystemRoot\System32\WindowsPowershell\v1.0"
$WindowsPSExe = "$WindowsPSFolder\powershell.exe"
$WindowsPSModuleFolder = "$WindowsPSFolder\Modules"
$GetFeatureScriptBlock = {
param([string]$FileName)
if (Get-Command -Name Get-WindowsFeature -ErrorAction SilentlyContinue) {
Get-WindowsFeature -Name Web-Server |
ConvertTo-Json |
Out-File $FileName
} else {
Add-Content -Path $FileName -Value 'NotServer'
}
}
try {
# Set env variable to include Windows Powershell modules so we can find
# the Get-WindowsFeature cmdlet.
$env:PSModulePath = $WindowsPSModuleFolder
# Call Windows PowerShell to get the info about the Web-Server feature
& $WindowsPSExe -command $WindowsFeatureScriptBlock -args $FileName
} finally {
# Reset the env variable even if there's an error.
$env:PSModulePath = $InitialPSModulePath
}
}
A nyilvános gépkonfigurációs előzetes verzióban nem elérhető gyakori DSC-funkciók
A nyilvános előzetes verzióban a gépkonfiguráció nem támogatja a gépek közötti függőségek erőforrások használatával WaitFor*
történő megadását. Nem lehetséges, hogy az egyik gép figyelje és várja meg, amíg egy másik gép elér egy állapotot a haladás előtt.
Az újraindítás kezelése nem érhető el a gépkonfiguráció nyilvános előzetes verziójában, beleértve a $global:DSCMachineStatus
nem elérhetőeket is. A konfigurációk nem tudják újraindítani a csomópontot a konfiguráció során vagy végén.
A támogatott modulokkal kapcsolatos ismert kompatibilitási problémák
A Microsoft támogatja a PowerShell-galéria PsDscResources modulját és a Windowst tartalmazó PSDesiredStateConfiguration modult, és a DSC-hez gyakran használt erőforráskészlet. A PSDscResources modul DSCv3-hoz való frissítéséig vegye figyelembe az alábbi ismert kompatibilitási problémákat.
- Ne használja a Windowst tartalmazó PSDesiredStateConfiguration modul erőforrásait. Ehelyett váltson PSDscResources-re.
- A PsDscResourcesban ne használja a
WindowsFeature
,WindowsFeatureSet
,WindowsOptionalFeature
ésWindowsOptionalFeatureSet
az erőforrásokat. Ismert probléma merült fel a DISM modul betöltése a PowerShell 7.1.3-ban Windows Serveren, amely frissítést igényel.
A nx*
Linuxhoz készült DSC-adattárban található Linux-erőforrások a C és a Python nyelv kombinációjával lettek megírva. Mivel a Linuxon futó DSC elérési útja a PowerShell használata, a meglévő nx*
erőforrások nem kompatibilisek a DSCv3-nal. Amíg el nem érhető egy linuxos támogatott erőforrásokat tartalmazó új modul, egyéni erőforrásokat kell létrehoznia.
Együttélés a DSC 3- és korábbi verzióival
A gépkonfigurációban a DSC 3-ás verziója együtt létezhet a Windowsban és Linuxon telepített régebbi verziókkal. Ezek implementációja elkülönül. A DSC-verziókban azonban nincs ütközésészlelés, ezért ne próbálja meg kezelni ugyanazokat a beállításokat.
Következő lépések
- Olvassa el a gép konfigurációjának áttekintését.
- Egyéni gépkonfigurációs csomag fejlesztése.
- Azure-szabályzatdefiníció létrehozása a
GuestConfiguration
modul használatával a környezet tömeges felügyeletéhez. - Egyéni szabályzatdefiníció hozzárendelése az Azure Portal használatával.
- Megtudhatja, hogyan tekintheti meg a gépkonfigurációs házirend-hozzárendelések megfelelőségi részleteit.