Recursos de DSC
En la plataforma de Desired State Configuration de Microsoft (DSC), los recursos de DSC representan una interfaz estandarizada para administrar la configuración de un sistema. Los recursos pueden modelar componentes como genéricos como un archivo o como específico como una configuración de servidor IIS. Los recursos usan una sintaxis declarativa en lugar de imperativa. En lugar de especificar cómo establecer un sistema en el estado deseado, con DSC se especifica cuál es el estado deseado. Los recursos controlan el "cómo" por usted.
Los recursos administran instancias de un componente configurable. Por ejemplo, el PSDscResources/Environment
recurso administra variables de entorno. Cada variable de entorno es una instancia diferente del recurso. Cada recurso define un esquema que describe cómo validar y administrar una instancia del recurso.
DSCv3 admite varios tipos de recursos:
- Un recurso definido con un manifiesto de recursos es un recurso basado en comandos . DSC usa el manifiesto para determinar cómo invocar el recurso y cómo validar las propiedades de la instancia de recurso.
- Un grupo de recursos es un recurso basado en comandos con una
resources
propiedad que toma una matriz de instancias de recursos y los procesa. Los grupos de recursos pueden aplicar un control especial a sus instancias de recursos anidadas, como cambiar el usuario al que se ejecutan los recursos. - Un proveedor de recursos es un grupo de recursos que permite el uso de recursos no basados en comandos con DSCv3. Por ejemplo, el
DSC/PowerShellGroup
proveedor de recursos habilita el uso de recursos de DSC implementados en módulos de PowerShell.
Nombres de tipo de recurso
Los recursos se identifican por su nombre de tipo completo. El nombre de tipo se usa para especificar un recurso en los documentos de configuración y como el valor de la --resource
marca cuando se usan los dsc resource *
comandos .
El nombre de tipo completo de un recurso usa la sintaxis siguiente:
<owner>[.<group>][.<area>]/<name>
Cada recurso debe definir y owner
.name
Los group
componentes y area
permiten organizar los recursos en espacios de nombres relacionados, como Microsoft.SqlServer/Database
y Microsoft.SqlServer.Database/Role
.
Para obtener más información sobre los nombres de tipo y cómo DSC los valida, consulte Referencia de esquema de nombre de tipo completo del recurso de DSC.
Propiedades del recurso
Las propiedades de un recurso son la configuración y las opciones que un usuario puede declarar para administrar una instancia. Los recursos siempre tienen al menos una propiedad. Los recursos definen sus propiedades en su esquema.
Las propiedades son opcionales de forma predeterminada. Los recursos se pueden invocar directamente o declarar en una configuración con solo las propiedades que son relevantes para la tarea o el propósito actual. No es necesario declarar todas las propiedades de una instancia. Las propiedades pueden tener valores predeterminados para su estado deseado.
La mayoría de las propiedades son uno de los tipos básicos:
- Las propiedades de cadena requieren que el valor de propiedad sea un conjunto de caracteres, como
machine
. - Las propiedades de entero requieren que el valor de propiedad sea un número sin una parte fraccionarcional, como
5
. - Las propiedades booleanas requieren que el valor de propiedad sea
true
ofalse
. - Las propiedades de matriz requieren que el valor de propiedad sea una lista de elementos. Normalmente, las propiedades de matriz especifican que los valores deben ser de un tipo determinado, como una lista de enteros de código de salida o una lista de rutas de acceso de archivo.
Las propiedades complejas requieren que el valor de propiedad sea un objeto con subpropiedades definidas. Las subpropiedades pueden ser básicas o complejas, pero normalmente son un tipo básico.
Enumeración de recursos
Puede usar DSC para enumerar los recursos disponibles con el dsc resource list
comando . DSC busca PATH
recursos basados en comandos e invoca proveedores de recursos disponibles para enumerar sus recursos.
De forma predeterminada, el comando devuelve todos los recursos de DSC detectados.
dsc resource list
type version tags description
---- ------- ---- -----------
Test/TestGroup 0.1.0
Microsoft/OSInfo 0.1.0 {os, linux, windows, macos} Returns information about the operating system.
Microsoft.Windows/Registry 0.1.0 {Windows, NT} Registry configuration provider for the Windows Registry
This is a test resource.
DSC/PowerShellGroup 0.1.0 {PowerShell} Resource provider to classic DSC Powershell resources.
DSC/AssertionGroup 0.1.0 `test` will be invoked for all resources in the supplied configuration.
DSC/ParallelGroup 0.1.0 All resources in the supplied configuration run concurrently.
This is a test resource.
DSC/Group 0.1.0 All resources in the supplied configuration is treated as a group.
Puede filtrar los resultados por el nombre de tipo, la descripción y las etiquetas de un recurso. Para más información, consulte la lista de recursos de dsc.
Invocación de recursos
Puede invocar recursos directamente con los dsc resource *
comandos para administrar una sola instancia a través de las tres operaciones de DSC Get, Test y Set.
Operaciones Get
Cada recurso implementa la operación Get , que recupera el estado real de una instancia de recurso. Use el dsc resource get
comando para invocar la operación.
Por ejemplo, puede usar el Microsoft.Windows/Registry
recurso para obtener el estado real de un valor de clave del Registro:
'{
"keyPath": "HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion",
"valueName": "SystemRoot"
}' | dsc resource get --resource Microsoft.Windows/Registry
actualState:
$id: https://developer.microsoft.com/json-schemas/windows/registry/20230303/Microsoft.Windows.Registry.schema.json
keyPath: HKLM\Software\Microsoft\Windows NT\CurrentVersion
valueName: SystemRoot
valueData:
String: C:\WINDOWS
Operaciones de prueba
Algunos recursos implementan la operación de prueba . En el caso de los recursos que no implementan la operación de prueba , DSCv3 puede validar el estado de una instancia con una prueba sintética. La prueba sintética es una comparación estricta sin distinción entre mayúsculas y minúsculas de los valores deseados y reales de las propiedades de la instancia. Solo los recursos que tienen requisitos de validación avanzados o complejos deben implementar la propia operación de prueba .
Use el dsc resource test
comando para invocar la operación. DSC devuelve datos que incluyen:
- Estado deseado para la instancia.
- Estado real de la instancia.
- Si la instancia está en el estado deseado.
- Lista de propiedades que no están en el estado deseado.
Por ejemplo, puede probar si existe una clave del Registro específica:
'{
"keyPath": "HKCU\\key\\that\\does\\not\\exist",
}' | dsc resource test --resource Microsoft.Windows/Registry
desiredState:
keyPath: HKCU\key\that\does\not\exist
actualState:
$id: https://developer.microsoft.com/json-schemas/windows/registry/20230303/Microsoft.Windows.Registry.schema.json
keyPath: ''
_inDesiredState: false
inDesiredState: false
differingProperties:
- keyPath
Operaciones de conjunto
La mayoría de los recursos implementan la operación Set , que aplica el estado deseado para una instancia. Cuando se usa con DSCv3, la operación Set es idempotente, lo que significa que el recurso solo invoca la operación cuando una instancia no está en el estado deseado. Dado que la operación es idempotente, invocarla repetidamente es la misma que invocarla una vez. El modelo idempotente impide que los efectos secundarios se ejecuten innecesariamente código.
Los recursos que no implementan la operación Set son recursos de aserción . Puede usar recursos de aserción para recuperar y validar el estado de una instancia, pero no puede usarlos para aplicar un estado deseado.
Use el dsc resource set
comando para invocar la operación. DSC devuelve datos que incluyen:
- Estado de la instancia antes de la operación.
- Estado de la instancia después de la operación.
- Lista de propiedades que cambió la operación.
Por ejemplo, puede crear una clave del Registro estableciendo el estado deseado para una clave que no existe.
'{
"keyPath": "HKCU\\example\\key",
"valueName": "Example",
"valueData": { "String": "This is an example." }
}' | dsc resource set --resource Microsoft.Windows/Registry
beforeState:
$id: https://developer.microsoft.com/json-schemas/windows/registry/20230303/Microsoft.Windows.Registry.schema.json
keyPath: ''
afterState:
$id: https://developer.microsoft.com/json-schemas/windows/registry/20230303/Microsoft.Windows.Registry.schema.json
keyPath: HKCU\example\key
valueName: Example
valueData:
String: This is an example.
changedProperties:
- keyPath
- valueName
- valueData
Declaración de instancias de recursos
Los documentos de configuración de DSC permiten administrar más de un recurso o instancia de recurso a la vez. Los documentos de configuración declaran una colección de instancias de recursos y su estado deseado. Esto permite modelar estados deseados complejos mediante la composición de diferentes recursos e instancias juntos, como definir una línea base de seguridad para el cumplimiento o la configuración de una granja de servidores web.
Una declaración de instancia de recurso siempre incluye:
-
name
- Nombre corto y legible para la instancia que es única en el documento. Este nombre se usa para el registro y ayuda a documentar el propósito de una instancia en el documento. -
type
: el nombre de tipo completo del recurso para identificar el DSC del recurso debe usar para administrar la instancia. -
properties
: estado deseado para la instancia. DSC valida los valores con respecto al esquema de instancia del recurso.
Este fragmento de código de documento de configuración de ejemplo declara una instancia del Microsoft.Windows/Registry
recurso.
$schema: https://schemas.microsoft.com/dsc/2023/08/configuration.schema.json
resources:
- name: example key value
type: Microsoft.Windows/Registry
properties:
keyPath: HKCU\example\key
valueName: Example
valueData:
String: This is an example.
Consulte también
- Anatomía de un recurso de DSC basado en comandos para obtener información sobre la creación de recursos en el lenguaje que prefiera.
- Documentos de configuración para obtener información sobre el uso de recursos en un documento de configuración.
- Referencia de la línea de comandos para el comando "dsc resource"