Freigeben über


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 Adapterab. Wenn die adapter-Eigenschaft nicht definiert ist, leitet DSC den Wert von kind als Resourceab. 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, TopLevelOSInfound TopLevelGroup.
  • Die TopLevelGroup Instanz definiert die geschachtelten Instanzen NestedEcho und NestedGroup.
  • Die NestedGroup Instanz 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 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.

  1. 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.
  2. 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/OSInfound 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/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 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')]"