Kontrolní seznam pro vytváření prostředků DSC
Tento kontrolní seznam obsahuje seznam osvědčených postupů při vytváření nového prostředku DSC.
Modul obsahuje manifest.
Váš modul obsahující prostředky DSC by měl mít soubor manifestu (.psd1
) modulu. Nastavení DscResourcesToExport manifestu by mělo obsahovat název každého prostředku DSC.
Žádné prostředky DSC založené na třídách, které nezahrnute do nastavení DscResourcesToExport , nebudou zjistitelné pomocí Get-DscResource
rutiny, nebudou se s rutinou Invoke-DscResource
používat a autoři konfigurace DSC nezískají intellisense pro tyto prostředky DSC při vytváření konfigurace DSC v nástroji VS Code.
Každý prostředek DSC založený na MOF má soubor schématu.
Zkontrolujte, že váš prostředek DSC má správnou strukturu a obsahuje všechny požadované soubory. Každý prostředek DSC založený na MOF by měl mít schema.mof
soubor. Prostředky DSC založené na MOF, které nemají soubor schématu, nebudou uvedené v seznamu a autoři konfigurace DSC nezískají IntelliSense pro tyto prostředky DSC při vytváření konfigurace DSC v nástroji Get-DscResource
VS Code.
Adresářová struktura prostředku xRemoteFile
DSC, který je součástí modulu xPSDesiredStateConfiguration , vypadá takto:
xPSDesiredStateConfiguration
DSCResources
MSFT_xRemoteFile
MSFT_xRemoteFile.psm1
MSFT_xRemoteFile.schema.mof
Examples
xRemoteFile_DownloadFile.ps1
ResourceDesignerScripts
GenerateXRemoteFileSchema.ps1
Tests
ResourceDesignerTests.ps1
xPSDesiredStateConfiguration.psd1
Prostředek DSC se načte bez chyb.
Prostředky DSC by se měly načítat bez chyb. Pokud to chcete ověřit, spusťte Import-Module <resource_module> -Force
a potvrďte, že příkaz nevyvolá žádné chyby.
Prostředek DSC je idempotentní
Prostředky DSC by měly být idempotentní. Prostředek DSC je idempotentní, když můžete vícekrát vyvolat metodu Set prostředku DSC se stejnými vlastnostmi a vždy dosáhnout stejného výsledku.
Například s tímto parametrem hash definující požadovaný stav hodnoty klíče registru pomocí Registry
prostředku DSC z modulu PSDscResources :
$DscParameters = @{
Name = 'Registry'
ModuleName = 'PSDscResources'
Property = @{
Key = 'HKEY_CURRENT_USER\DscExample'
Ensure = 'Present'
Force = $true
ValueName = 'Test'
ValueData = 'Example'
ValueType = 'String'
}
}
Při prvním volání Invoke-DscResource -Method Set @DscParameters
by se DscExample
měl klíč registru objevit v podregistru HKEY_CURRENT_USER
s hodnotou Test nastavenou na Example
. Budoucí vyvolání by nemělo měnit stav systému.
Pokud chcete zajistit, aby byl prostředek idempotentní, můžete ho otestovat přímo nebo pomocí Invoke-DscResource
příkazu .
Přímé testování prostředku DSC založeného na MOF:
- Spusťte funkci prostředku
Set-TargetResource
DSC. - Zkontrolujte stav systému a ověřte, že je v požadovaném stavu bez nežádoucího nastavení.
- Znovu spusťte funkci Set-TargetResource prostředku DSC. Nemělo by to vyvolávat žádné chyby.
- Opakujte kroky 2 až 3, dokud nebudete spokojeni s tím, že volání
Set-TargetResource
nastaví požadovaný stav podle očekávání a bez chyb.
Přímé testování prostředku DSC založeného na třídě:
- Vytvořte novou instanci třídy prostředku DSC a uložte ji do proměnné jako objekt.
- Nastavte hodnotu každé vlastnosti na požadovaný stav objektu.
- Zavolejte metodu Set objektu.
- Zkontrolujte stav systému a ověřte, že je v požadovaném stavu bez nežádoucího nastavení.
- Znovu zavolejte metodu Set na objektu. Nemělo by to vyvolávat žádné chyby.
- Opakujte kroky 4 až 5, dokud nebudete spokojeni s tím, že volání metody Set nastaví požadovaný stav pouze podle očekávání a bez chyb.
Testování prostředku DSC pomocí Invoke-DscResource
:
- Spusťte
Invoke-DscResource
metodu Set . - Zkontrolujte stav systému a ověřte, že je v požadovaném stavu bez nežádoucího nastavení.
- Spusťte
Invoke-DscResource
metodu Set . - Opakujte kroky 2 až 3, dokud nebudete spokojeni s tím, že volání
Invoke-DscResource
pomocí metody Set nastaví požadovaný stav pouze podle očekávání a bez chyb.
Scénář testování změn uživatele
Prostředky DSC by se měly chovat předvídatelně i v případě, že uživatelé změní stav systému ručně mimo DSC. Tady jsou kroky, které byste měli provést k ověření chování prostředku DSC při úpravě systému uživatelem:
- Začněte systémem, který není v požadovaném stavu.
- Spuštění
Invoke-DscResource -Method Set
s prostředkem - Ověření
Invoke-DscResource -Method Test
vrácení$true
- Nastavení nakonfigurované položky tak, aby byla mimo požadovaný stav
- Ověření
Invoke-DscResource -Method Test
vrácení$false
Tady je konkrétnější příklad použití Registry
prostředku DSC:
- Začněte klíčem registru, který není v požadovaném stavu.
- Spusťte
Invoke-DscResource -Method Test
příkaz s vlastnostmi požadovaného stavu a ujistěte se, že vlastnost InDesiredState výsledku je$false
. - Spusťte
Invoke-DscResource -Method Get
příkaz s požadovanými vlastnostmi a ujistěte se, že nahlášený stav neodpovídá požadovaným vlastnostem stavu. - Spusťte
Invoke-DscResource -Method Set
příkaz s požadovanými vlastnostmi stavu a ujistěte se, že nedojde k chybě. - Spusťte
Invoke-DscResource -Method Test
znovu a ujistěte se, že vlastnost InDesiredState výsledku je nyní true. - Spusťte
Invoke-DscResource -Method Get
znovu a ujistěte se, že nahlášený stav odpovídá požadovaným vlastnostem stavu. - Nastavte hodnotu klíče tak, aby nebyl v požadovaném stavu.
- Znovu spusťte
Invoke-DscResource -Method Get
příkaz a ověřte změněný stav. - Spusťte
Invoke-DscResource -Method Test
znovu a ověřte, že vrátí hodnotu false.
Přímé volání funkcí a metod prostředků DSC
Nezapomeňte otestovat *-TargetResource
funkce (pro prostředky DSC založené na MOF) a metody Get, Set a Test (pro prostředky DSC založené na třídách) tak, že je zavoláte přímo a ověříte, že fungují podle očekávání.
Testování kompatibility na všech podporovaných platformách
Prostředky DSC by měly fungovat na jakékoli platformě, na které je DSC podporováno. Pokud váš prostředek DSC na některých z těchto platforem záměrně nefunguje, vraťte konkrétní chybovou zprávu. Ujistěte se, že prostředek DSC kontroluje, jestli jsou rutiny, které voláte, přítomné na konkrétním počítači.
Poznámka
Jednou z běžných testovacích mezer je ověření prostředku DSC pouze na serverových verzích Windows. Prostředky DSC jsou často také navržené tak, aby pracovaly na SKU klientů. Ujistěte se, že testujete chování pro skladové položky klienta nebo chybu, pokud je váš prostředek DSC nepodporuje.
Get-DSCResource seznam prostředků DSC
Když je modul nainstalovaný, Get-DscResource
měl by do výstupu rutiny zahrnout váš prostředek DSC.
Modul obsahuje příklady.
Vytvořte příklady kvality, které uživatelům pomůžou pochopit, jak používat prostředky DSC. To je zásadní, protože uživatelé často nakládají s ukázkovým kódem jako s dokumentací.
Nejprve určete, jaké příklady se mají zahrnout do modulu. Měli byste alespoň pokrýt nejdůležitější případy použití prostředků DSC.
Pokud váš modul obsahuje několik prostředků DSC, které potřebují spolupracovat pro ucelený scénář, nejprve napište základní ucelený příklad.
Napište své počáteční příklady co nejsušnější a nejkratší. Ukažte, jak začít pracovat s prostředky DSC v malých spravovatelných blocích, jako je například vytvoření nového virtuálního pevného disku. Napište si pozdější příklady, abyste mohli stavět na dřívějších příkladech (například vytvoření virtuálního počítače z virtuálního pevného disku) a ukázat pokročilé funkce (například vytvoření virtuálního počítače s dynamickou pamětí).
Pro každý příklad:
- Napište krátký popis vysvětlující jeho účel a způsob použití libovolných parametrů.
- Ověřte, že každý příklad běží bez neúmyslných chyb nebo upozornění a vynucuje požadovaný stav.
Chybové zprávy jsou srozumitelné a pomáhají uživatelům řešit problémy.
Dobré chybové zprávy by měly:
- Existuje: Bez chybové zprávy nebude uživatel ani vědět, že se něco pokazilo.
- Být čitelný pro člověka: Žádné skryté kódy chyb.
- Buďte přesní: Přesně popište problém.
- Buďte konstruktivní: Poskytněte rady, jak problém vyřešit.
- Buďte zdvořilí: Neobviňujte uživatele nebo ho nenuťte, aby se cítil špatně.
Ujistěte se, že jste ověřili chyby v kompletních scénářích, protože se můžou lišit od chyb vrácených při spuštění funkcí (u prostředků DSC založených na MOF) nebo metod (u prostředků DSC založených na třídách).
Implementace prostředku DSC neobsahuje pevně zakódované cesty.
Ujistěte se, že v žádné implementaci prostředků DSC nejsou žádné pevně zakódované cesty, zejména pokud předpokládají jazyk, jako en-US
je . Pokud je to možné, používejte proměnné systémového prostředí.
Například místo:
$tempPath = "C:\Users\kkaczma\AppData\Local\Temp\MyResource"
$programFilesPath = "C:\Program Files (x86)"
Zápis:
$tempPath = Join-Path $env:temp "MyResource"
$programFilesPath = ${env:ProgramFiles(x86)}
Implementace prostředku DSC neobsahuje informace o uživateli.
Prostředky DSC by nikdy neměly v kódu obsahovat identifikovatelné osobní údaje. Ujistěte se, že kód neobsahuje žádná jména e-mailů, informace o účtu ani jména lidí.
Testováno s platnými a neplatnými přihlašovacími údaji
Pokud váš prostředek DSC přebírá jako parametr přihlašovací údaje:
- Ověřte, že se prostředek DSC chová podle očekávání, když účet nemá přístup.
- Ověřte, že prostředek DSC funguje s přihlašovacími údaji zadanými pro get, set a test.
- Pokud váš prostředek DSC přistupuje ke sdíleným složkám, otestujte všechny varianty, které potřebujete podporovat, například:
- Standardní sdílené složky windows
- Sdílené složky DFS
- Sdílené složky SAMBA (pokud chcete podporovat Linux)
Prostředek DSC nevyžaduje interaktivní vstup
Prostředky DSC by nikdy neměly zobrazovat výzvu k zadání vstupu. Místo toho by všechny požadované hodnoty měly být vlastnosti prostředku DSC. Například místo zobrazení výzvy uživatele Get-Credential
přidejte vlastnost Přihlašovací údaje do prostředku DSC.
Důkladné testování
Tento kontrolní seznam obsahuje položky, které jsou důležité pro testování a které jsou často vynechány. Pro prostředek DSC byste také měli napsat funkční a kompletní testovací případy, abyste zajistili očekávané chování. Nezapomeňte použít negativní testovací případy a testovat neplatný vstup.