Hola a todos
Vamos a hablar de configuraciones DSC.
Las configuraciones de DSC son scripts de PowerShell que definen un tipo especial de función. Para definir una configuración, utilice la palabra clave Configuration de PowerShell.
Configuration MyDscConfiguration {
Node «TEST-PC1» {
WindowsFeature MyFeatureInstance {
Ensure = ‘Present’
Name = ‘RSAT’
}
WindowsFeature My2ndFeatureInstance {
Ensure = ‘Present’
Name = ‘Bitlocker’
}
}
}
MyDscConfiguration
Se debe guardar el script como un archivo .ps1.
Sintaxis de configuración:
Un script de configuración consta de las siguientes partes:
- El bloque de configuración. Este es el bloque de script más externo. Lo define utilizando la palabra clave Configuración y proporcionando un nombre. En este caso, el nombre de la configuración es «MyDscConfiguration».
- Uno o más bloques de nodos. Estos definen los nodos (computadoras o VM) que está configurando. En la configuración anterior, hay un bloque de Nodo que apunta a una computadora llamada «TEST-PC1». El bloque Nodo puede aceptar múltiples nombres de computadora.
- Uno o más bloques de recursos. Aquí es donde la configuración establece las propiedades de los recursos que está configurando. En este caso, hay dos bloques de recursos, cada uno de los cuales llama al recurso «WindowsFeature».
Dentro de un bloque de configuración, puede hacer cualquier cosa que normalmente haría en una función de PowerShell. Por ejemplo, en el ejemplo anterior, si no desea codificar el nombre de la computadora de destino en la configuración, puede agregar un parámetro para el nombre del nodo:
En este ejemplo, especifica el nombre del nodo pasándolo como el parámetro ComputerName cuando compila la configuración. El nombre predeterminado es «localhost».
Configuration MyDscConfiguration
{
param
(
[string[]]$ComputerName=’localhost’
)
Node $ComputerName
{
WindowsFeature MyFeatureInstance
{
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance
{
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
El bloque Node también puede aceptar múltiples nombres de computadora. En el ejemplo anterior, puede usar el parámetro -ComputerName o pasar una lista de computadoras separadas por comas directamente al bloque Nodo.
MyDscConfiguration -ComputerName «localhost», «Server01»
Al especificar una lista de computadoras en el bloque de nodos, desde dentro de una configuración, debe usar la notación de matriz.
Configuration MyDscConfiguration
{
Node @(‘localhost’, ‘Server01’)
{
WindowsFeature MyFeatureInstance
{
Ensure = ‘Present’
Name = ‘RSAT’
}
WindowsFeature My2ndFeatureInstance
{
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Compiling the configuration
Before you can enact a configuration, you have to compile it into a MOF document. You do this by calling the configuration like you would call a PowerShell function. The last line of the example containing only the name of the configuration, calls the configuration.
Cuando llamas a la configuración, esta:
Resuelve todas las variables:
Crea una carpeta en el directorio actual con el mismo nombre que la configuración.
Crea un archivo denominado NodeName.mof en el nuevo directorio, donde NodeName es el nombre del nodo de destino de la configuración. Si hay más de un nodo, se creará un archivo MOF para cada nodo.
La compilación de la primera configuración anterior da como resultado la siguiente estructura de carpetas:
. .\MyDscConfiguration.ps1
MyDscConfiguration
Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode LastWriteTime Length Name
—- ————- —— —-
-a—- 10/23/2015 4:32 PM 2842 localhost.mof
Si la configuración toma un parámetro, como en el segundo ejemplo, debe proporcionarse en tiempo de compilación. Así es como se vería:
. .\MyDscConfiguration.ps1
MyDscConfiguration -ComputerName ‘MyTestNode’
Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode LastWriteTime Length Name
—- ————- —— —-
-a—- 10/23/2015 4:32 PM 2842 MyTestNode.mof
Uso de nuevos recursos en su configuración:
Si ejecutó los ejemplos anteriores, es posible que haya notado que se le advirtió que estaba usando un recurso sin importarlo explícitamente. Actualmente, DSC se envía con 12 recursos como parte del módulo PSDesiredStateConfiguration.
El cmdlet, Get-DscResource, se puede usar para determinar qué recursos están instalados en el sistema y disponibles para que los use el LCM. Una vez que estos módulos se han colocado en $env:PSModulePath y Get-DscResource los reconoce correctamente, aún deben cargarse dentro de su configuración.
Import-DscResource es una palabra clave dinámica que solo se puede reconocer dentro de un bloque de configuración, no es un cmdlet. Import-DscResource admite dos parámetros:
- ModuleName es la forma recomendada de usar Import-DscResource. Acepta el nombre del módulo que contiene los recursos que se van a importar (así como una matriz de cadenas de nombres de módulos).
- Nombre es el nombre del recurso a importar. Este no es el nombre descriptivo devuelto como «Nombre» por Get-DscResource, sino el nombre de clase que se usa al definir el esquema de recursos (devuelto como ResourceType por Get-DscResource). Para obtener más información sobre el uso de Import-DSCResource, consulte Uso de Import-DSCResource
Extraido de MS.
Espero que os resulte útil.
Un saludo