DSC-Ressourcentypschemareferenz
Zusammenfassung
Gibt an, ob es sich bei einer Ressource um eine Adapterressource, eine Gruppenressource oder eine normale Ressource handelt.
Metadaten
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]
Beschreibung
DSC unterstützt drei Arten von befehlsbasierten DSC-Ressourcen:
Resource
– Gibt an, dass das Manifest nicht für eine Gruppe oder Adapterressource bestimmt ist.Group
– Gibt an, dass das Manifest für eine Gruppenressourceist.Adapter
– Gibt an, dass das Manifest für eine Adapterressourceist.Import
– Gibt an, dass das Manifest für eine Importer-Ressourceist.
Wenn kind
im Ressourcenmanifest nicht definiert ist, leitet DSC den Wert für die Eigenschaft ab. Wenn die eigenschaft adapter
im Ressourcenmanifest definiert ist, leitet DSC den Wert von kind
als Adapter
ab. Wenn die adapter
-Eigenschaft nicht definiert ist, leitet DSC den Wert von kind
als Resource
ab.
DSC kann nicht ableiten, ob ein Manifest für eine Gruppenressource ist.
Definieren Sie beim Definieren einer Gruppenressource immer explizit die eigenschaft kind
im Manifest als Group
.
Adapterressourcen
Eine Adapterressource stellt nicht befehlsbasierte Ressourcen für DSC zur Verfügung. Sie verfügen immer über eine resources
Eigenschaft, die ein Array von geschachtelten Ressourceninstanzen verwendet. Adapter können zusätzliche Kontrolle darüber bieten, wie die angepassten Ressourcen verarbeitet werden.
Eine Adapterressource muss immer die Adapter- definieren und Eigenschaften im Ressourcenmanifest überprüfen.
Mit dem Microsoft.DSC/PowerShell
Adapter können Sie beispielsweise PowerShell Desired State Configuration (PSDSC)-Ressourcen in DSC verwenden. PSDSC-Ressourcen werden als Komponenten von PowerShell-Modulen veröffentlicht. Sie definieren keine Ressourcenmanifeste.
Gruppieren von Ressourcen
Gruppenressourcen werden immer auf geschachtelten DSC-Ressourceninstanzen ausgeführt. Gruppenressourcen können ändern, wie die geschachtelten Instanzen verarbeitet werden, z. B. die Microsoft.DSC/Assertion
Gruppenressource.
Eine Gruppenressource muss immer die Art Eigenschaft im Ressourcenmanifest definieren.
Gruppenressourcen können auch verwendet werden, um Gruppen von Ressourcen für die Verarbeitung zusammenzupacken, z. B. die Microsoft.DSC/Group
-Ressource. Sie können die dependsOn-Eigenschaft für eine Ressourceninstanz in einer Konfiguration verwenden, um auf eine Gruppenressource zu verweisen, anstatt jede Ressource in der Liste aufzulisten.
Importeureressourcen
Importeureressourcen lösen eine externe Quelle in eine Reihe geschachtelter DSC-Ressourceninstanzen auf. Die Eigenschaften einer Importressource definieren, wie die externe Quelle gefunden und aufgelöst wird.
Eine Importressource muss immer die Art definieren und Eigenschaften im Ressourcenmanifest auflösen.
Beispielsweise löst die Microsoft.DSC/Import
-Importressource Instanzen aus einem externen Konfigurationsdokument auf, sodass Sie Konfigurationen aus mehreren Dateien verfassen können.
Geschachtelte Ressourceninstanzen
Die ressourceninstanzen, die in Adapter- und Gruppenressourcen deklariert oder von Importeurressourcen aufgelöst werden, werden geschachtelten Ressourceninstanzenaufgerufen.
Bei geschachtelten Instanzen wird eine Ressourceninstanz angrenzenden, wenn:
- Sie wird in derselben Gruppen- oder Adapterinstanz deklariert.
- Es wird von derselben Importinstanz aufgelöst.
Eine Ressourceninstanz ist externen einer geschachtelten Instanz, wenn:
- Sie wird außerhalb der Gruppen- oder Adapterinstanz deklariert.
- Es wird von einer anderen Importinstanz aufgelöst.
- Sie ist in einer angrenzenden Gruppe, einem Adapter oder einer Importinstanz geschachtelt.
Bei Instanzen auf oberster Ebene sind andere Instanzen auf oberster Ebene nebeneinander. Alle anderen Instanzen sind extern.
Betrachten Sie den folgenden Konfigurationsausschnitt. Es definiert sieben Ressourceninstanzen:
- Auf oberster Ebene definiert die Konfiguration die instanzen
TopLevelEcho
,TopLevelOSInfo
undTopLevelGroup
. - Die
TopLevelGroup
Instanz definiert die geschachtelten InstanzenNestedEcho
undNestedGroup
. - Die
NestedGroup
Instanz definiert die geschachtelten InstanzenDeeplyNestedEcho
undDeeplyNestedOSInfo
.
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: { }
Die folgende Matrix definiert die Beziehungen jeder Instanz in der Konfiguration:
TopLevelEcho | TopLevelOSInfo | TopLevelGroup | NestedEcho | Geschachtelte Gruppe | TiefnestedEcho | TiefnestedOSInfo | |
---|---|---|---|---|---|---|---|
TopLevelEcho- | Selbst | Angrenzend | Angrenzend | Äußerlich | Äußerlich | Äußerlich | Äußerlich |
TopLevelOSInfo- | Angrenzend | Selbst | Angrenzend | Äußerlich | Äußerlich | Äußerlich | Äußerlich |
TopLevelGroup- | Angrenzend | Angrenzend | Selbst | Äußerlich | Äußerlich | Äußerlich | Äußerlich |
NestedEcho- | Äußerlich | Äußerlich | Äußerlich | Selbst | Angrenzend | Äußerlich | Äußerlich |
NestedGroup- | Äußerlich | Äußerlich | Äußerlich | Angrenzend | Selbst | Äußerlich | Äußerlich |
TiefnestedEcho | Äußerlich | Äußerlich | Äußerlich | Äußerlich | Äußerlich | Selbst | Angrenzend |
DeeplyNestedOSInfo- | Äußerlich | Äußerlich | Äußerlich | Äußerlich | Äußerlich | Angrenzend | Selbst |
Verweisen auf geschachtelte Instanzen
Geschachtelte Ressourceninstanzen haben Einschränkungen für die abhängig von Eigenschaft und der reference() Konfigurationsfunktion.
- Sie können nur auf benachbarte Instanzen verweisen. Sie können nicht von außerhalb der Instanz, die sie deklariert oder aufgelöst, auf eine geschachtelte Instanz verweisen. Sie können keinen Verweis auf eine Ressource außerhalb der Gruppe, des Adapters oder des Importeurs für eine geschachtelte Instanz verwenden.
- Sie können die eigenschaft
dependsOn
nur für benachbarte Instanzen verwenden. Sie müssen eine Abhängigkeit von der Gruppe, dem Adapter oder der Importinstanz hinzufügen, keine geschachtelte Instanz. Geschachtelte Instanzen können nicht von externen Instanzen abhängen.
Die folgenden Beispiele zeigen gültige und ungültige Verweise und Abhängigkeiten. In den Beispielen wird die Microsoft.DSC/Group
Ressource verwendet, die Funktionalität ist jedoch für Adapter- und Importressourcen identisch.
Beispiel 1 : Gültige Verweise und Abhängigkeiten
In dieser Beispielkonfiguration werden mehrere gültige Verweise und Abhängigkeiten definiert. Außerdem werden zwei Instanzen der Microsoft.DSC/Group
Ressource definiert, die in der anderen geschachtelt sind.
Die Instanz der obersten Ebene der Test/Echo
Ressourcenverweise und hängt von der Instanz der obersten Ebene der Microsoft/OSInfo
Ressource ab. Die Instanzen der obersten Ebene der Test/Echo
und Microsoft/OSInfo
Ressourcen hängen beide von der Instanz der obersten Ebene der Microsoft.DSC/Group
Ressource ab.
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
Die Instanz der obersten Ebene von Microsoft.DSC/Group
definiert drei geschachtelte Ressourceninstanzen: Test/Echo
, Microsoft/OSInfo
und Microsoft.DSC/Group
. Wie auf oberster Ebene verweist die Test/Echo
Instanz und hängt von der angrenzenden geschachteltenMicrosoft/OSInfo
Instanz ab, und diese Instanz hängt von der angrenzenden geschachtelten Microsoft.DSC/Group
Instanz ab.
# 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
Schließlich definiert die geschachtelte Instanz von Microsoft.DSC/Group
zwei geschachtelte Instanzen. Die tief geschachtelte Instanz von Test/Echo
Verweisen und hängt von der tief geschachtelten Instanz von Microsoft/OSInfo
ab.
- 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: {}
In jedem Fall sind die Verweise und Abhängigkeiten an benachbarte Instanzen in der Konfiguration. Instanzen auf oberster Ebene hängen nur von anderen Instanzen auf der obersten Ebene ab oder verweisen sie darauf. In der Gruppe der obersten Ebene geschachtelte Instanzen hängen nur von anderen geschachtelten Instanzen in derselben Gruppe ab oder verweisen sie darauf. Die tief geschachtelten Instanzen, die in der geschachtelten Gruppe definiert sind, hängen nur von anderen tief geschachtelten Instanzen in derselben Gruppe ab oder verweisen sie darauf.
Wenn Sie die Konfiguration zusammensetzen, erhalten Sie dieses vollständige 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: {}
Beispiel 2 : Ungültiger Verweis und Abhängigkeit von einer geschachtelten Instanz
Diese Beispielkonfiguration ist ungültig, da die Instanz der obersten Ebene der Test/Echo
-Ressourcenverweise und von der geschachtelten Microsoft/OSInfo
Instanz abhängt. Die geschachtelte Instanz ist außerhalb der Instanz auf oberster Ebene und nicht nebenan.
# 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: {}
Beispiel 3 : Ungültiger Verweis und Abhängigkeit von einer externen Instanz
Diese Beispielkonfiguration ist ungültig, da die geschachtelte Instanz der Test/Echo
-Ressourcenverweise und von der instanz auf oberster Ebene Microsoft/OSInfo
abhängt. Die Instanz auf oberster Ebene ist außerhalb der geschachtelten Instanz, nicht nebenan.
# 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')]"