Dokumentacja właściwości schematu manifestu zasobu DSC
Streszczenie
Definiuje sposób pobierania schematu JSON, który weryfikuje wystąpienie zasobu DSC.
Metadane
SchemaDialect: https://json-schema.org/draft/2020-12/schema
SchemaID: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/resource/manifest.schema.json
Type: object
Opis
Każdy zasób DSC oparty na poleceniach musi zdefiniować schema
właściwość w manifeście. Ta właściwość określa, jak usługa DSC może pobrać schemat JSON, który musi zweryfikować wystąpienia zasobu.
Schemat JSON można zdefiniować dynamicznie za pomocą właściwości polecenia lub statycznie z właściwością osadzoną .
W celach programistycznych można wygodniej używać command
właściwości i unikać konieczności dostosowywania zarówno kodu, jak i schematu.
Firma Microsoft zaleca używanie embedded
właściwości podczas publikowania zasobu publicznie. Gdy manifest deklaruje schemat z właściwością command
, DSC wywołuje polecenie na początku dowolnej operacji przy użyciu zasobu, prawdopodobnie wpływając na wydajność. Schemat jest również niedostępny do integrowania narzędzi, gdy zasób nie jest zainstalowany lokalnie. Gdy schemat jest osadzony w manifeście, narzędzie DSC i integrowanie narzędzi wymaga tylko samego manifestu.
Przykłady
Przykład 1 — pobieranie schematu JSON za pomocą polecenia
Ten przykład pochodzi z Microsoft.Windows/Registry
zasobu DSC.
"schema": {
"command": {
"executable": "registry",
"args": ["schema"]
}
}
Po zdefiniowaniu command
właściwości DSC pobiera schemat JSON w celu zweryfikowania wystąpień tego zasobu za pomocą następującego polecenia:
registry schema
Przykład 2 — osadzony schemat JSON
Ten przykład pochodzi z Microsoft/OSInfo
zasobu DSC. Definiuje osadzony schemat JSON używany przez dsC do sprawdzania poprawności wystąpienia zasobu.
"schema": {
"embedded": {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "OSInfo",
"type": "object",
"required": [],
"properties": {
"$id": { "type": "string" },
"architecture": { "type": ["string","null"] },
"bitness": { "$ref": "#/definitions/Bitness" },
"codename": { "type": ["string","null"] },
"edition": { "type": ["string","null"] },
"family": { "$ref": "#/definitions/Family" },
"version": { "type": "string" }
},
"additionalProperties": false,
"definitions": {
"Bitness": { "type": "string", "enum": ["32","64","unknown"] },
"Family": { "type": "string", "enum": ["Linux","macOS","Windows"] }
}
}
}
Wymagane właściwości
Definicja schema
musi zawierać dokładnie jedną z następujących właściwości:
Właściwości
command
Właściwość command
definiuje sposób, w jaki DSC musi wywołać zasób, aby uzyskać schemat JSON, który weryfikuje jego wystąpienia. Wartość tej właściwości musi być obiektem i zdefiniować executable
właściwość.
Podczas publikowania manifestu command
za pomocą właściwości firma Microsoft zaleca opublikowanie schematu JSON publicznie dostępnego identyfikatora URI i ustawienie url
właściwości na ten identyfikator URI. Umożliwia to tworzenie narzędzi i innych integrujących aplikacje w celu weryfikacji wystąpień bez lokalnego uruchamiania polecenia.
Type: object
RequiredProperties: [executable]
Pliku wykonywalnego
Właściwość executable
definiuje nazwę polecenia do uruchomienia. Wartość musi być nazwą polecenia wykrywalnego w zmiennej środowiskowej systemu PATH
lub pełną ścieżką do polecenia. Rozszerzenie pliku jest wymagane tylko wtedy, gdy polecenie nie jest rozpoznawalne przez system operacyjny jako plik wykonywalny.
Type: string
Required: true
args
Właściwość args
definiuje tablicę ciągów, które mają być przekazywane jako argumenty do polecenia. DSC przekazuje argumenty do polecenia w kolejności ich określenia.
Type: array
Required: false
Default: []
osadzona
Właściwość embedded
definiuje pełny schemat JSON dla dsC, aby zweryfikować wystąpienia zasobu DSC. Wartość tej właściwości musi być prawidłowym schematem JSON, który definiuje $schema
słowa kluczowe , i properties
. type
Type: object
MinimumPropertyCount: 1
url
Właściwość url
definiuje adres URL opublikowanego schematu JSON zasobu. Jest on używany przez integrowanie narzędzi dla zasobów, które definiują command
właściwość zamiast embedded
właściwości.
Type: string
Format: uri