Anatomie prostředku DSC založeného na příkazech
Prostředky DSC poskytují standardizované rozhraní pro správu nastavení systému. Prostředek definuje vlastnosti, které můžete spravovat, a implementuje kód potřebný k získání instance prostředku.
Prostředky DSC založené na příkazech jsou definované alespoň se dvěma soubory:
- Manifest prostředku DSC, který DSC říká, jak s prostředkem pracovat.
- Jeden nebo více spustitelných souborů a jejich závislostí pro správu instancí prostředku.
Manifesty prostředků DSC
Manifesty prostředků DSC jsou definované jako soubory JSON. Aby služba DSC rozpoznala soubor JSON jako manifest, musí soubor splňovat následující kritéria:
- Soubor musí být zjistitelný v
PATH
proměnné prostředí. - Název souboru musí končit na
.dsc.resource.json
.
Když DSC hledá v místním systému dostupné prostředky DSC založené na příkazech, hledá ve všech složkách v souboru PATH
soubory, které používají zásady vytváření názvů manifestu prostředků DSC. DSC pak analyzuje každý z těchto zjištěných souborů a ověří je podle schématu JSON manifestu prostředků DSC.
Pokud se soubor JSON ověří podle schématu, DSC může použít prostředek DSC.
Manifest musí definovat minimálně:
- Verze schématu JSON manifestu prostředků DSC, se kterou je kompatibilní.
- Plně kvalifikovaný název prostředku, například
Microsoft.Windows/Registry
. Plně kvalifikovaná syntaxe názvu je<owner>[.<group>][.<area>]/<name>
. Komponenty skupiny a oblasti plně kvalifikovaného názvu umožňují uspořádání prostředků do oborů názvů. - Jak může DSC volat příkaz k získání aktuálního stavu instance prostředku.
- Způsob ověření instance. Může se jednat o jednu z následujících možností:
- Schéma JSON, které popisuje instanci
- Aby se schéma získalo za běhu, musí se volat příkaz DSC.
- Příkaz pro ověření vnořených prostředků DSC Tato poslední možnost platí jenom pro prostředky skupiny DSC a prostředky poskytovatele DSC.
Manifest může volitelně definovat:
- Jak může DSC volat příkaz a otestovat, jestli je instance v požadovaném stavu.
- Jak může DSC volat příkaz k nastavení instance do požadovaného stavu.
- Význam nenulových ukončovacích kódů vrácených příkazem
- Jak může DSC volat příkaz ke správě dalších prostředků DSC, když je prostředkem prostředek skupiny DSC nebo prostředek poskytovatele DSC.
- Metadata o prostředku, jako je jeho autor a krátký popis.
Pokud manifest nedefinuje, jak otestovat instanci prostředku, DSC pro instance prostředků provede syntetický test. Syntetický test DSC vždy získá skutečný stav instance a provede přísné porovnání vlastností instance s požadovaným stavem podle rozlišování velkých a malých písmen. Syntetický test ignoruje všechny vlastnosti s předponou podtržítka (_
) nebo znaménkem dolaru ($
). Pokud některá z vlastností není přesně stejná jako definovaný požadovaný stav, DSC ohlásí, že instance nedodržuje předpisy.
Pokud manifest nedefinuje, jak nastavit instanci prostředku DSC, nemůže DSC použít prostředek k vynucení požadovaného stavu.
Manifest nemusí zadávat stejný spustitelný soubor pro každou operaci. Definice každé operace je nezávislá.
Spustitelné soubory prostředků DSC
Prostředky DSC založené na příkazech vždy vyžadují spustitelný soubor ke spuštění DSC. Manifest prostředku DSC nemusí být součástí spustitelného souboru. Spustitelným souborem může být jakýkoli spustitelný soubor, například binární aplikace nebo skript prostředí. Prostředek může pro různé operace používat různé spustitelné soubory.
Aby DSC používal spustitelný soubor, musí být zjistitelný v PATH
proměnné prostředí. DSC volá spustitelný soubor jednou pro každou operaci a pomocí ukončovacího kódu vráceného spustitelným souborem určí, jestli byl příkaz úspěšný. DSC považuje ukončovací kód 0
za úspěšný a všechny ostatní ukončovací kódy jako chybu.
Vstupy
DSC odesílá vstup do prostředků DSC založených na příkazech jako datový objekt blob JSON přes stdin nebo jako sadu argumentů a hodnot. Zpracování vstupu je definováno pro jednotlivé operace v manifestu prostředků DSC.
Když DSC odešle vstup jako JSON přes stdin, datový objekt blob představuje json reprezentaci požadovaného stavu instance. Jedná se o nejrobusnější možnost pro prostředek, protože umožňuje, aby prostředek podporoval složité vlastnosti s vnořenými objekty.
Když DSC odešle vstup jako argumenty, vygeneruje dvojici argumentů pro každou ze zadaných vlastností. Prvním argumentem je název vlastnosti s --
předponou , například --duration
. Druhým argumentem je hodnota vlastnosti. Řazení dvojic argumentů není zaručeno. Tato metoda zadávání znaků nepodporuje složité vlastnosti.
Výstupy
Spustitelný soubor prostředku DSC založeného na příkazech musí při zavolání pomocí DSC vracet data JSON do stdout. Výstupní kódování musí být UTF-8. Když prostředek vrátí stav instance, DSC ověří data JSON ve schématu instance prostředku.
U prostředků poskytovatele DSC DSC očekává, že spustitelný soubor projde stavy instancí pro prostředky, které spravuje, buď jako jedno pole JSON, nebo jako řadu řádků JSON.
Prostředky DSC založené na příkazech můžou hlásit informace o protokolování do DSC tím, že do stderru vygenerují řádky JSON. Každá položka protokolu musí být objekt JSON, který obsahuje dva klíče:
- Klíč
message
definuje pro položku protokolu řetězec čitelný pro člověka. - Klíč
level
definuje, jestli zpráva představujeError
,Warning
neboInformation
.
DSC shromažďuje zprávy z prostředků a zobrazuje je ve výsledcích operace konfigurace. Když DSC vyvolá prostředek přímo mimo konfiguraci, neshromažďuje zprávy. Místo toho se pouze vysílají do stderru.