Freigeben über


Referenz zum DSC-Ressourcentypschema

Zusammenfassung

Gibt an, ob eine Ressource eine Adapterressource, eine Gruppenressource oder eine normale Ressource ist.

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]

Beschreibung

DSC unterstützt drei Arten von befehlsbasierten DSC-Ressourcen:

  • Resource – Gibt an, dass das Manifest nicht für eine Gruppen- oder Adapterressource vorgesehen ist.
  • Group – Gibt an, dass das Manifest für eine Gruppenressource gilt.
  • Adapter – Gibt an, dass das Manifest für eine Adapterressource gilt.

Wenn kind nicht im Ressourcenmanifest definiert ist, leitet DSC den Wert für die Eigenschaft ab. Wenn die adapter -Eigenschaft im Ressourcenmanifest definiert ist, leitet DSC den Wert von kind als ab Adapter. Wenn die adapter -Eigenschaft nicht definiert ist, leitet DSC den Wert von kind als ab Resource. DSC kann nicht ableiten, ob ein Manifest für eine Gruppenressource ist.

Wenn Sie eine Gruppenressource definieren, definieren Sie die kind Eigenschaft im Manifest immer explizit 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 geschachtelter Ressourceninstanzen akzeptiert. Adapter bieten möglicherweise zusätzliche Kontrolle darüber, wie die angepassten Ressourcen verarbeitet werden.

Eine Adapterressource muss immer den Adapter definieren und eigenschaften im Ressourcenmanifest überprüfen .

Mit dem Microsoft.DSC/PowerShell Adapter können Sie beispielsweise PsDSC-Ressourcen (PowerShell Desired State Configuration) in DSC verwenden. PSDSC-Ressourcen werden als Komponenten von PowerShell-Modulen veröffentlicht. Sie definieren keine Ressourcenmanifeste.

Gruppierung von Ressourcen

Gruppenressourcen werden immer auf geschachtelten DSC-Ressourceninstanzen ausgeführt. Gruppenressourcen können die Verarbeitung der geschachtelten Instanzen ändern, z. B. die Microsoft.DSC/Assertion Gruppenressource.

Gruppenressourcen können auch verwendet werden, um Ressourcengruppen für die Verarbeitung zu bündeln, z. B. die Microsoft.DSC/Group Ressource. Sie können die dependsOn-Eigenschaft für eine Ressource instance in einer Konfiguration verwenden, um auf eine Gruppenressource zu verweisen, anstatt jede Ressource in der Liste aufzulisten.

Geschachtelte Ressourceninstanzen

Die Ressourceninstanzen, die sowohl in Adapter- als auch in Gruppenressourcen deklariert sind, werden als geschachtelte Ressourceninstanzen bezeichnet. Bei geschachtelten Instanzen befindet sich eine Ressource instance angrenzend, wenn sie in derselben Gruppe oder im gleichen Adapter instance deklariert ist. Eine Ressource instance außerhalb einer geschachtelten instance, wenn sie außerhalb des gruppen- oder adapter-instance deklariert oder innerhalb einer angrenzenden Gruppen- oder Adapter-instance geschachtelt ist. Bei Instanzen der obersten Ebene sind andere Instanzen auf der obersten Ebene nebeneinander. Alle anderen Instanzen sind extern.

Sehen Sie sich den folgenden Konfigurationsausschnitt an. Sie definiert sieben Ressourceninstanzen:

  • Auf der obersten Ebene definiert die Konfiguration die -, TopLevelOSInfo- TopLevelEchound TopLevelGroup -Instanzen.
  • Die TopLevelGroup instance definiert die geschachtelten Instanzen NestedEcho und NestedGroup.
  • Die NestedGroup instance definiert die geschachtelten Instanzen DeeplyNestedEcho und DeeplyNestedOSInfo.
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 der einzelnen instance in der Konfiguration:

TopLevelEcho TopLevelOSInfo TopLevelGroup NestedEcho NestedGroup DeeplyNestedEcho DeeplyNestedOSInfo
TopLevelEcho Self Angrenzend Angrenzend Extern Extern Extern Extern
TopLevelOSInfo Angrenzend Self Angrenzend Extern Extern Extern Extern
TopLevelGroup Angrenzend Angrenzend Self Extern Extern Extern Extern
NestedEcho Extern Extern Extern Self Angrenzend Extern Extern
NestedGroup Extern Extern Extern Angrenzend Self Extern Extern
DeeplyNestedEcho Extern Extern Extern Extern Extern Self Angrenzend
DeeplyNestedOSInfo Extern Extern Extern Extern Extern Angrenzend Self

Verweisen auf geschachtelte Instanzen

Geschachtelte Ressourceninstanzen weisen Einschränkungen für die dependsOn-Eigenschaft und die reference() -Konfigurationsfunktion auf.

  1. Sie können nur auf benachbarte Instanzen verweisen. Sie können nicht auf eine geschachtelte instance von außerhalb der Gruppe oder des Adapters verweisen, der sie deklariert. Sie können keinen Verweis auf eine Ressource außerhalb der Gruppen- oder Adapterressource für eine geschachtelte instance verwenden.
  2. Sie können die dependsOn -Eigenschaft nur für benachbarte Instanzen verwenden. Sie müssen eine Abhängigkeit von der Gruppe oder dem Adapter instance hinzufügen, keine geschachtelte instance der Gruppe oder des Adapters. 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, aber die Funktionalität ist für Adapterressourcen 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, eine in der anderen geschachtelt.

Die oberste Ebene instance der Test/Echo Ressource verweist und hängt vom instance der obersten Ebene der Microsoft/OSInfo Ressource ab. Die Instanzen der Test/Echo obersten Ebene der Ressourcen und Microsoft/OSInfo hängen beide von der obersten instance 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 instance der Microsoft.DSC/Group obersten Ebene definiert drei geschachtelte Ressourceninstanzen: Test/Echo, Microsoft/OSInfound Microsoft.DSC/Group. Wie auf der obersten Ebene verweist der Test/Echo instance auf die benachbarte geschachtelteMicrosoft/OSInfo instance und hängt davon ab, dass instance von der angrenzenden geschachtelten Microsoft.DSC/Group instance abhängt.

# 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 instance von Microsoft.DSC/Group zwei geschachtelte Instanzen. Die tief geschachtelte instance von Test/Echo Verweisen und hängt von der tief geschachtelten instance von Microsoft/OSInfoab.

- 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 beziehen sich die Verweise und Abhängigkeiten auf benachbarte Instanzen in der Konfiguration. Instanzen auf der obersten Ebene hängen nur von anderen Instanzen auf der obersten Ebene ab oder verweisen auf diese. Instanzen, die in der Gruppe der obersten Ebene geschachtelt sind, hängen nur von anderen geschachtelten Instanzen in derselben Gruppe ab oder verweisen 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 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 einem geschachtelten instance

Diese Beispielkonfiguration ist ungültig, da die instance der obersten Ebene der Test/Echo Ressource verweist und von der geschachtelten Microsoft/OSInfo instance abhängt. Die geschachtelte instance befindet sich außerhalb des instance der obersten 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 einem externen instance

Diese Beispielkonfiguration ist ungültig, da die geschachtelte instance der Test/Echo Ressource auf verweist und vom instance der obersten Ebene Microsoft/OSInfo abhängt. Die instance der obersten Ebene befindet sich außerhalb des geschachtelten instance 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 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')]"