Dokumentacja schematu typu zasobu DSC
Streszczenie
Określa, czy zasób jest zasobem karty, zasobem grupy, czy zwykłym zasobem.
Metadane
SchemaDialect: https://json-schema.org/draft/2020-12/schema
SchemaID: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/definitions/resourceKind.json
Type: string
ValidValues: [Resource, Adapter, Group, Import]
Opis
DsC obsługuje trzy rodzaje zasobów DSC opartych na poleceniach:
Resource
— wskazuje, że manifest nie jest przeznaczony dla zasobu grupy ani karty.Group
— wskazuje, że manifest dotyczy zasobu grupy .Adapter
— wskazuje, że manifest dotyczy zasobu karty .Import
— wskazuje, że manifest dotyczy zasobu importera .
Jeśli kind
nie jest zdefiniowana w manifeście zasobu, rozszerzenie DSC wywnioskuje wartość właściwości. Jeśli właściwość adapter
jest zdefiniowana w manifeście zasobu, rozszerzenie DSC wywnioskuje wartość kind
jako Adapter
. Jeśli właściwość adapter
nie jest zdefiniowana, rozszerzenie DSC wywnioskuje wartość kind
jako Resource
.
DsC nie może wywnioskować, czy manifest dotyczy zasobu grupy.
Podczas definiowania zasobu grupy zawsze jawnie zdefiniuj właściwość kind
w manifeście jako Group
.
Zasoby adaptera
Zasób adaptera udostępnia zasoby nienależące do poleceń dsC. Zawsze mają właściwość resources
, która przyjmuje tablicę zagnieżdżonych wystąpień zasobów. Adaptery mogą zapewnić dodatkową kontrolę nad sposobem przetwarzania dostosowanych zasobów.
Zasób karty musi zawsze definiować adaptera
Na przykład karta Microsoft.DSC/PowerShell
umożliwia korzystanie z zasobów konfiguracji żądanego stanu programu PowerShell (PSDSC) w usłudze DSC. Zasoby PSDSC są publikowane jako składniki modułów programu PowerShell. Nie definiują manifestów zasobów.
Grupowanie zasobów
Zasoby grupy zawsze działają na zagnieżdżonych wystąpieniach zasobów DSC. Zasoby grupy mogą zmieniać sposób przetwarzania zagnieżdżonych wystąpień, takich jak zasób grupy Microsoft.DSC/Assertion
.
Zasób grupy musi zawsze definiować właściwość typu
Zasoby grupy mogą również służyć do łączenia zestawów zasobów na potrzeby przetwarzania, takich jak zasób Microsoft.DSC/Group
. Możesz użyć właściwości dependsOn dla wystąpienia zasobu w konfiguracji, aby wskazać zasób grupy zamiast wyliczać każdy zasób na liście.
Zasoby importera
Zasoby importera rozpoznają źródło zewnętrzne dla zestawu zagnieżdżonych wystąpień zasobów DSC. Właściwości zasobu importera definiują sposób znajdowania i rozpoznawania źródła zewnętrznego.
Zasób importera musi zawsze definiować rodzaju
Na przykład zasób importera Microsoft.DSC/Import
rozpoznaje wystąpienia z zewnętrznego dokumentu konfiguracji, umożliwiając tworzenie konfiguracji z wielu plików.
Zagnieżdżone wystąpienia zasobów
Wystąpienia zasobów zadeklarowane w zasobach adaptera i grupy lub rozpoznawane przez zasoby importera są nazywane wystąpieniami zasobów zagnieżdżonych .
W przypadku wystąpień zagnieżdżonych wystąpienie zasobu jest sąsiadujące, jeśli:
- Jest zadeklarowany w tym samym wystąpieniu grupy lub karty.
- Jest on rozpoznawany przez to samo wystąpienie importera.
Wystąpienie zasobu jest zewnętrzne do wystąpienia zagnieżdżonego, jeśli:
- Jest zadeklarowana poza wystąpieniem grupy lub karty
- Jest on rozpoznawany przez inne wystąpienie importera
- Jest on zagnieżdżony wewnątrz sąsiedniej grupy, karty lub wystąpienia importera.
W przypadku wystąpień najwyższego poziomu inne wystąpienia na najwyższym poziomie są sąsiadujące. Wszystkie inne wystąpienia są zewnętrzne.
Rozważmy następujący fragment kodu konfiguracji. Definiuje siedem wystąpień zasobów:
- Na najwyższym poziomie konfiguracja definiuje wystąpienia
TopLevelEcho
,TopLevelOSInfo
iTopLevelGroup
. - Wystąpienie
TopLevelGroup
definiuje zagnieżdżone wystąpieniaNestedEcho
iNestedGroup
. - Wystąpienie
NestedGroup
definiuje zagnieżdżone wystąpieniaDeeplyNestedEcho
iDeeplyNestedOSInfo
.
resources:
- name: TopLevelEcho
type: Test/Echo
properties: { output: 'top level instance' }
- name: TopLevelOSInfo
type: Microsoft/OSInfo
properties: { }
- name: TopLevelGroup
type: Microsoft.DSC/Group
properties:
$schema:
resources:
- name: NestedEcho
type: Test/Echo
properties: { output: 'nested instance' }
- name: NestedGroup
type: Microsoft.DSC/Group
properties:
$schema:
resources:
- name: DeeplyNestedEcho
type: Test/Echo
properties: { output: 'deeply nested instance' }
- name: DeeplyNestedOSInfo
type: Microsoft/OSInfo
properties: { }
Poniższa macierz definiuje relacje poszczególnych wystąpień w konfiguracji:
TopLevelEcho | TopLevelOSInfo | TopLevelGroup | ZagnieżdżoneEcho | Zagnieżdżona grupa | DeeplyNestedEcho | DeeplyNestedOSInfo | |
---|---|---|---|---|---|---|---|
TopLevelEcho | Jaźń | Przyległy | Przyległy | Zewnętrzny | Zewnętrzny | Zewnętrzny | Zewnętrzny |
TopLevelOSInfo | Przyległy | Jaźń | Przyległy | Zewnętrzny | Zewnętrzny | Zewnętrzny | Zewnętrzny |
TopLevelGroup | Przyległy | Przyległy | Jaźń | Zewnętrzny | Zewnętrzny | Zewnętrzny | Zewnętrzny |
|
Zewnętrzny | Zewnętrzny | Zewnętrzny | Jaźń | Przyległy | Zewnętrzny | Zewnętrzny |
NestedGroup | Zewnętrzny | Zewnętrzny | Zewnętrzny | Przyległy | Jaźń | Zewnętrzny | Zewnętrzny |
DeeplyNestedEcho | Zewnętrzny | Zewnętrzny | Zewnętrzny | Zewnętrzny | Zewnętrzny | Jaźń | Przyległy |
|
Zewnętrzny | Zewnętrzny | Zewnętrzny | Zewnętrzny | Zewnętrzny | Przyległy | Jaźń |
Odwoływanie się do zagnieżdżonych wystąpień
Zagnieżdżone wystąpienia zasobów mają ograniczenia dotyczące właściwości
- Możesz odwoływać się tylko do sąsiednich wystąpień. Nie można odwołać się do wystąpienia zagnieżdżonego spoza wystąpienia, które deklaruje je lub rozwiązuje. Nie można użyć odwołania do zasobu spoza grupy, karty lub zasobu importera dla wystąpienia zagnieżdżonego.
- Dla sąsiednich wystąpień można używać tylko właściwości
dependsOn
. Należy dodać zależność od grupy, karty lub wystąpienia importera, a nie wystąpienia zagnieżdżonego. Zagnieżdżone wystąpienia nie mogą zależeć od wystąpień zewnętrznych.
W poniższych przykładach pokazano prawidłowe i nieprawidłowe odwołania i zależności. W przykładach użyto zasobu Microsoft.DSC/Group
, ale funkcjonalność jest taka sama w przypadku kart i importu zasobów.
Przykład 1 — prawidłowe odwołania i zależności
Ta przykładowa konfiguracja definiuje kilka prawidłowych odwołań i zależności. Definiuje również dwa wystąpienia zasobu Microsoft.DSC/Group
, jedno zagnieżdżone wewnątrz drugiego.
Wystąpienie najwyższego poziomu odwołania do zasobu Test/Echo
i zależy od wystąpienia najwyższego poziomu zasobu Microsoft/OSInfo
. Wystąpienia najwyższego poziomu zasobów Test/Echo
i Microsoft/OSInfo
zależą od wystąpienia najwyższego poziomu zasobu Microsoft.DSC/Group
.
resources:
# The top level echo references and depends on the top-level OSInfo.
# It also depends on the top-level Group.
- name: Top level echo
type: Test/Echo
properties:
output: >-
[reference(
resourceId('Microsoft/OSInfo', 'Top level OSInfo')
).actualState]
dependsOn:
- "[resourceId('Microsoft/OSInfo', 'Top level OSInfo')]"
- "[resourceId('Microsoft.DSC/Group', 'Top level group')]"
# The top level OSInfo depends on the top-level Group.
- name: Top level OSInfo
type: Microsoft/OSInfo
properties: {}
dependsOn:
- "[resourceId('Microsoft.DSC/Group', 'Top level group')]"
- name: Top level group
type: Microsoft.DSC/Group
properties: # snipped for brevity
Wystąpienie najwyższego poziomu Microsoft.DSC/Group
definiuje trzy zagnieżdżone wystąpienia zasobów: Test/Echo
, Microsoft/OSInfo
i Microsoft.DSC/Group
. Podobnie jak na najwyższym poziomie, wystąpienie Test/Echo
odwołuje się i zależy od sąsiedniego zagnieżdżonego wystąpieniaMicrosoft/OSInfo
i to wystąpienie zależy od sąsiedniego zagnieżdżonego wystąpienia Microsoft.DSC/Group
.
# Other top-level instances snipped for brevity
- name: Top level group
type: Microsoft.DSC/Group
properties:
$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/config/document.json
resources:
# The nested echo references and depends on the adjacent nested OSInfo.
- name: Nested echo
type: Test/Echo
properties:
output: >-
[reference(
resourceId('Microsoft/OSInfo', 'Nested OSInfo')
).actualState]
dependsOn:
- "[resourceId('Microsoft/OSInfo', 'Nested OSInfo')]"
# The nested OSInfo depends on the adjacent nested Group.
- name: Nested OSInfo
type: Microsoft/OSInfo
properties: {}
- name: Nested Group
type: Microsoft.DSC/Group
properties: # snipped for brevity
Na koniec zagnieżdżone wystąpienie Microsoft.DSC/Group
definiuje dwa zagnieżdżone wystąpienia. Głęboko zagnieżdżone wystąpienie odwołań Test/Echo
i zależy od głęboko zagnieżdżonego wystąpienia Microsoft/OSInfo
.
- name: Top level group
type: Microsoft.DSC/Group
properties:
$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/config/document.json
resources:
# Snipped the Test/Echo and Microsoft/OSInfo instances for brevity
- name: Nested Group
type: Microsoft.DSC/Group
properties:
$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/config/document.json
resources:
# The deeply nested echo references and depends on the adjacent
# deeply nested OSInfo.
- name: Deeply nested echo
type: Test/Echo
properties:
output: >-
[reference(
resourceId('Microsoft/OSInfo', 'Deeply nested OSInfo')
).actualState]
dependsOn:
- "[resourceId('Microsoft/OSInfo', 'Deeply nested OSInfo')]"
- name: Deeply nested OSInfo
type: Microsoft.OSInfo
properties: {}
W każdym przypadku odwołania i zależności dotyczą sąsiednich wystąpień w konfiguracji. Wystąpienia na najwyższym poziomie zależą tylko od innych wystąpień na najwyższym poziomie lub odwołują się do innych wystąpień. Wystąpienia zagnieżdżone w grupie najwyższego poziomu zależą tylko od innych zagnieżdżonych wystąpień w tej samej grupie lub odwołują się do innych zagnieżdżonych wystąpień. Głęboko zagnieżdżone wystąpienia zdefiniowane w zagnieżdżonej grupie zależą tylko od innych głęboko zagnieżdżonych wystąpień w tej samej grupie lub odwołują się do innych głęboko zagnieżdżonych wystąpień.
Łącząc konfigurację, uzyskasz pełny dokument:
# yaml-language-server: $schema=https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/bundled/resource/manifest.vscode.json
$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/config/document.json
resources:
# The top level echo references and depends on the top-level OSInfo.
- name: Top level echo
type: Test/Echo
properties:
output: >-
[reference(
resourceId('Microsoft/OSInfo', 'Top level OSInfo')
).actualState]
dependsOn:
- "[resourceId('Microsoft/OSInfo', 'Top level OSInfo')]"
# The top level OSInfo depends on the top-level Group.
- name: Top level OSInfo
type: Microsoft/OSInfo
properties: {}
dependsOn:
- "[resourceId('Microsoft.DSC/Group', 'Top level group')]"
- name: Top level group
type: Microsoft.DSC/Group
properties:
$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/config/document.json
resources:
# The nested echo references and depends on the adjacent nested OSInfo.
- name: Nested echo
type: Test/Echo
properties:
output: >-
[reference(
resourceId('Microsoft/OSInfo', 'Nested OSInfo')
).actualState]
dependsOn:
- "[resourceId('Microsoft/OSInfo', 'Nested OSInfo')]"
# The nested OSInfo depends on the adjacent nested Group.
- name: Nested OSInfo
type: Microsoft/OSInfo
properties: {}
- name: Nested Group
type: Microsoft.DSC/Group
properties:
$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/config/document.json
resources:
# The deeply nested echo references and depends on the adjacent
# deeply nested OSInfo.
- name: Deeply nested echo
type: Test/Echo
properties:
output: >-
[reference(
resourceId('Microsoft/OSInfo', 'Deeply nested OSInfo')
).actualState]
dependsOn:
- "[resourceId('Microsoft/OSInfo', 'Deeply nested OSInfo')]"
- name: Deeply nested OSInfo
type: Microsoft.OSInfo
properties: {}
Przykład 2 — nieprawidłowe odwołanie i zależność od wystąpienia zagnieżdżonego
Ta przykładowa konfiguracja jest nieprawidłowa, ponieważ wystąpienie najwyższego poziomu odwołania do zasobów Test/Echo
i zależy od zagnieżdżonego wystąpienia Microsoft/OSInfo
. Zagnieżdżone wystąpienie jest zewnętrzne dla wystąpienia najwyższego poziomu, a nie sąsiadujące.
# yaml-language-server: $schema=https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/bundled/resource/manifest.vscode.json
$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/config/document.json
resources:
- name: Top level echo
type: Test/Echo
properties:
output: >-
[reference(
resourceId('Microsoft/OSInfo', 'Nested OSInfo')
).actualState]
dependsOn:
- "[resourceId('Microsoft/OSInfo', 'Nested OSInfo')]"
- name: Top level group
type: Microsoft.DSC/Group
properties:
$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/config/document.json
resources:
- name: Nested OSInfo
type: Microsoft/OSInfo
properties: {}
Przykład 3 — nieprawidłowe odwołanie i zależność od wystąpienia zewnętrznego
Ta przykładowa konfiguracja jest nieprawidłowa, ponieważ zagnieżdżone wystąpienie Test/Echo
zasobów jest zależne od wystąpienia Microsoft/OSInfo
najwyższego poziomu. Wystąpienie najwyższego poziomu jest zewnętrzne dla zagnieżdżonego wystąpienia, a nie sąsiadującego.
# yaml-language-server: $schema=https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/bundled/resource/manifest.vscode.json
$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/config/document.json
resources:
- name: Top level OSInfo
type: Microsoft/OSInfo
properties: {}
- name: Top level group
type: Microsoft.DSC/Group
properties:
$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/config/document.json
resources:
- name: Nested echo
type: Test/Echo
properties:
output: >-
[reference(
resourceId('Microsoft/OSInfo', 'Top level OSInfo')
).actualState]
dependsOn:
- "[resourceId('Microsoft/OSInfo', 'Top level OSInfo')]"