Referência de esquema do tipo de recurso DSC
Sinopse
Identifica se um recurso é um recurso de adaptador, um recurso de grupo ou um recurso normal.
Metadados
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]
Descrição
O DSC suporta três tipos de recursos DSC baseados em comando:
Resource
- Indica que o manifesto não é para um recurso de grupo ou adaptador.Group
- Indica que o manifesto é para um recurso de grupo .- Indica que o manifesto é para umde recursos do adaptador . - Indica que o manifesto é para umde recursos do importador de .
Quando kind
não está definido no manifesto do recurso, o DSC infere o valor da propriedade. Se a propriedade adapter
for definida no manifesto do recurso, o DSC inferirá o valor de kind
como Adapter
. Se a propriedade adapter
não estiver definida, o DSC inferirá o valor de kind
como Resource
.
O DSC não pode inferir se um manifesto é para um recurso de grupo.
Ao definir um recurso de grupo, sempre defina explicitamente a propriedade kind
no manifesto como Group
.
Recursos do adaptador
Um recurso de adaptador disponibiliza recursos não baseados em comandos para o DSC. Eles sempre têm uma propriedade resources
que usa uma matriz de instâncias de recursos aninhados. Os adaptadores podem fornecer controle adicional sobre como os recursos adaptados são processados.
Um recurso de adaptador deve sempre definir o do adaptador
Por exemplo, o adaptador Microsoft.DSC/PowerShell
permite que você use recursos de Configuração de Estado Desejado (PSDSC) do PowerShell no DSC. Os recursos PSDSC são publicados como componentes dos módulos do PowerShell. Eles não definem manifestos de recursos.
Recursos do grupo
Os recursos de grupo sempre operam em instâncias de recurso DSC aninhadas. Os recursos de grupo podem alterar a forma como as instâncias aninhadas são processadas, como o recurso de grupo Microsoft.DSC/Assertion
.
Um recurso de grupo deve sempre definir o tipo propriedade no manifesto do recurso.
Os recursos de grupo também podem ser usados para agrupar conjuntos de recursos para processamento, como o recurso Microsoft.DSC/Group
. Você pode usar a propriedade dependsOn para uma instância de recurso em uma configuração para apontar para um recurso de grupo em vez de enumerar cada recurso na lista.
Recursos do importador
Os recursos do importador resolvem uma fonte externa para um conjunto de instâncias aninhadas de Recursos DSC. As propriedades de um recurso importador definem como localizar e resolver a fonte externa.
Um recurso importador deve sempre definir o tipo e resolver propriedades no manifesto do recurso.
Por exemplo, o recurso do importador de Microsoft.DSC/Import
resolve instâncias de um documento de configuração externo, permitindo que você componha configurações a partir de vários arquivos.
Instâncias de recursos aninhados
As instâncias de recursos declaradas em recursos de adaptador e grupo ou resolvidas por recursos de importador são chamadas de instâncias de recurso aninhadas .
Para instâncias aninhadas, uma instância de recurso é adjacente se:
- É declarado no mesmo grupo ou instância do adaptador.
- É resolvido pela mesma instância do importador.
Uma instância de recurso é externa a uma instância aninhada se:
- É declarado fora do grupo ou da instância do adaptador
- É resolvido por uma instância de importador diferente
- Ele está aninhado dentro de um grupo, adaptador ou instância de importador adjacente.
Para instâncias de nível superior, outras instâncias de nível superior são adjacentes. Todas as outras instâncias são externas.
Considere o seguinte trecho de configuração. Ele define sete instâncias de recursos:
- No nível superior, a configuração define as instâncias
TopLevelEcho
,TopLevelOSInfo
eTopLevelGroup
. - A instância
TopLevelGroup
define as instâncias aninhadasNestedEcho
eNestedGroup
. - A instância
NestedGroup
define as instâncias aninhadasDeeplyNestedEcho
eDeeplyNestedOSInfo
.
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: { }
A matriz a seguir define as relações de cada instância na configuração:
TopLevelEcho | TopLevelOSInfo | Grupo de Nível Superior | NestedEcho | NestedGroup | DeeplyNestedEcho | DeeplyNestedOSInfo | |
---|---|---|---|---|---|---|---|
TopLevelEcho | Eu mesmo | Adjacente | Adjacente | Externa | Externa | Externa | Externa |
TopLevelOSInfo | Adjacente | Eu mesmo | Adjacente | Externa | Externa | Externa | Externa |
TopLevelGroup | Adjacente | Adjacente | Eu mesmo | Externa | Externa | Externa | Externa |
NestedEcho | Externa | Externa | Externa | Eu mesmo | Adjacente | Externa | Externa |
NestedGroup | Externa | Externa | Externa | Adjacente | Eu mesmo | Externa | Externa |
DeeplyNestedEcho | Externa | Externa | Externa | Externa | Externa | Eu mesmo | Adjacente |
DeeplyNestedOSInfo | Externa | Externa | Externa | Externa | Externa | Adjacente | Eu mesmo |
Referenciando instâncias aninhadas
As instâncias de recursos aninhados têm limitações para a propriedade
- Você só pode fazer referência a instâncias adjacentes. Não é possível fazer referência a uma instância aninhada de fora da instância que a declara ou resolve. Não é possível usar uma referência a um recurso fora do grupo, adaptador ou recurso importador para uma instância aninhada.
- Você só pode usar a propriedade
dependsOn
para instâncias adjacentes. Você deve adicionar uma dependência no grupo, adaptador ou instância do importador, não uma instância aninhada. As instâncias aninhadas não podem depender de instâncias externas.
Os exemplos a seguir mostram referências e dependências válidas e inválidas. Os exemplos usam o recurso Microsoft.DSC/Group
, mas a funcionalidade é a mesma para recursos de adaptador e importação.
Exemplo 1 - Referências e dependências válidas
Este exemplo de configuração define várias referências e dependências válidas. Ele também define duas instâncias do recurso Microsoft.DSC/Group
, uma aninhada dentro da outra.
A instância de nível superior do recurso Test/Echo
faz referência e depende da instância de nível superior do recurso Microsoft/OSInfo
. As instâncias de nível superior dos recursos Test/Echo
e Microsoft/OSInfo
dependem da instância de nível superior do recurso 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
A instância de nível superior do Microsoft.DSC/Group
define três instâncias de recursos aninhados: Test/Echo
, Microsoft/OSInfo
e Microsoft.DSC/Group
. Como no nível superior, a instância Test/Echo
faz referência e depende da instânciaMicrosoft/OSInfo
aninhada adjacente e essa instância depende da instância aninhada Microsoft.DSC/Group
adjacente.
# 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
Finalmente, a instância aninhada de Microsoft.DSC/Group
define duas instâncias aninhadas. A instância profundamente aninhada de Test/Echo
referências e depende da instância profundamente aninhada de 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: {}
Em todos os casos, as referências e dependências são para instâncias adjacentes na configuração. As instâncias no nível superior dependem apenas ou fazem referência a outras instâncias no nível superior. As instâncias aninhadas no grupo de nível superior dependem apenas ou fazem referência a outras instâncias aninhadas no mesmo grupo. As instâncias profundamente aninhadas definidas no grupo aninhado dependem apenas ou fazem referência a outras instâncias profundamente aninhadas no mesmo grupo.
Juntando a configuração, você obtém este documento completo:
# 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: {}
Exemplo 2 - Referência inválida e dependência em uma instância aninhada
Este exemplo de configuração é inválido, porque a instância de nível superior do recurso Test/Echo
faz referência e depende da instância de Microsoft/OSInfo
aninhada. A instância aninhada é externa à instância de nível superior, não adjacente.
# 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: {}
Exemplo 3 - Referência inválida e dependência de uma instância externa
Este exemplo de configuração é inválido, porque a instância aninhada do recurso Test/Echo
faz referência e depende da instância de Microsoft/OSInfo
de nível superior. A instância de nível superior é externa à instância aninhada, não adjacente.
# 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')]"
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários