martes, 21 de mayo de 2019

Windows PowerShell DSC Desired State Configuration

En Windows Server 2016 aparece una nueva característica de Windows PowerShell muy interesante, sin embargo, en mi experiencia profesional como Microsoft Certified Trainer MCT, Windows PowerShell DSC o Desired State Configuration sigue siendo una herramienta muy desconocida.

Desired State Configuration está basado en estándares y se basa en el modelo Open Management Infrastructure OMI, no precisa que los sistemas estén alojados en un dominio y puede administrar cualquier sistema operativo con un servidor Common Information Model CIM, compatible con OMI.

PowerShell DSC es un componente introducido en Windows Management Framework con la versión PowerShell 4.0, permite administrar componentes básicos de Windows, como servicios, archivos y configuración del Registro, los elementos utilizados para crear las configuraciones se basan en esos recursos, además se pueden crear recursos propios para aplicaciones y componentes. Las configuraciones desplegadas mediante DSC se pueden aplicar de forma automatizada a intervalos definidos, que detectan si el sistema no cumple el estado deseado.

Los pasos para desplegar Desired State Configuration en el entorno de una organización son los siguientes:
  • DSC se basa en Windows Remote Management WinRM para la configuración de los sistemas, por lo tanto, se requiere habilitar la administración remota, este paso puede configurarse mediante directivas de grupo o con el cmdlet: Set-WSManQuickConfig 
  • El agente de Local Configuration Manager LCM procesa las configuraciones DSC, se puede configurar el LCM utilizando un archivo Managed Object Format MOF  especial que establece parámetros específicos de Local Configuration Manager como: RefreshFrequencyMins, ConfigurationModeFreqencyMins, ConfigurationMode o RefreshMode entre otros y después aplicar la configuración con Windows PowerShell: Set-DscLocalConfiguration 
  • Los módulos desarrollados para Desired State Configuration están disponibles en la Galería de PowerShell de Windows ubicada en www.powershellgallery.com y para su descarga se requiere el módulo PowerShellGet. 
  • Los scripts de configuración son una plantilla, cualquier editor de texto o Windows PowerShell permite crear los scripts que se utilizan para compilar un archivo MOF, el agente LCM empuja o extrae estos, del sistema de destino, y posteriormente se llamaran como una función para compilar los datos de configuración en los archivos MOF por cada nodo definido. 
  • El cmdlet Start-DscConfiguration invoca al agente LCM para procesar la configuración y, si es necesario, realizar cambios en el nodo de destino. 
Start-DscConfiguration –Wait –Verbose –Path C:\DSC –ComputerName SRV01

La siguiente imagen muestra el código de un script de configuración de PowerShell DSC
 


El comando de PowerShell Test-DscConfiguration permite verificar si el nodo destino está en el estado deseado.

Al ejecutar el script de configuración, este crea:
  • Una carpeta en el directorio actual con el mismo nombre que la configuración.
  • Un archivo denominado NodeName.mof en el directorio ConfigurationName, donde NodeName es el nombre del nodo de destino. Si se segmenta más de un nodo, se creará un archivo MOF para cada nodo.
Si el script de configuración utiliza un parámetro, el parámetro debe proporcionarse en tiempo de compilación: SecureDscConfiguration -NodeName 'SVR01'

En Windows Server 2016 con DSC v2 la configuración parcial permite dividir una configuración en fragmentos de configuración más pequeños distribuidos en varios archivos, luego el LCM en cada servidor de destino es responsable de combinar todos los fragmentos en una sola configuración. Las configuraciones parciales también se pueden aplicar de forma independiente como una configuración completa. En cualquier caso, DSC debe funcionar en modo DSC push and pull.


Seguridad a lo Jabalí para Todos!!

Archivo del blog

Consultor e Instructor de Sistemas y Seguridad Informática en Asturias