Conoce Windows PowerShell DSC – Masterhacks Blog

Conoce Windows PowerShell DSC

Windows PowerShell DSC (Desired State Configuration, o Configuración de Estado Deseado), es un nuevo componente del Marco de Administración de Windows que PowerShell 4.0 introdujo por primera vez. Windows PowerSherll DSC permite administrar y mantener los sistemas de forma escalable y estandarizada al tirar de configuraciones declarativas.

Beneficios de Windows PowerShell DSC

  • Extender el Windows Management Framework v4 – Disponible iniciando con Windows PowerShell 4.0 en Windows Server 2012 R2 y Windows 8.1.
  • Habilitar administración y mantenimiento de sistemas utilizando configuraciones declarativas.
  • Utilizar recursos para crear configuraciones para aplicaciones específicos o componentes en un sistema – Puede ser descargado de una comunidad de sitios o puedes escribir una propia.
  • Poder reaplicar configuraciones automáticamente cuando un sistema se desplaza del estado deseado.
  • Está basado en estándares y es heterogéneo – Puedes administrar y operar el sistema con un OMI-complicant CIM Server.

Windows PowerShell DSC es una extensión de Windows PowerShell y del Windows Management Framework. PowerShell 4.0 introdujo por primera vez Windows PowerShell DSC en Windows Server 2012 R2 y Windows 8.1. Se puede utilizar Windows PowerShell DSC para administrar y mantener los sistemas por medio del uso de configuraciones declarativas.

Este enfoque es único porque en lugar de crear un script de Windows PowerShell para ejecutar una sentencia de comandos (enfoque imperativo), implementa una configuración que especifica a Windows PowerShell lo que quiere hacer (enfoque declarativo). Con DSC no es necesario preocuparse por incluir el manejo de errores u otra lógica, ya que el marco de automatización subyacente lo maneja automáticamente.

Enfoque Imperativo (Windows PowerShell)

  • Script define cómo se debe realizar una tarea
  • Scripts pueden ser difíciles de leer
  • Scripts no se ejecutarán nuevamente y se deben ejecutar a través de una acción administrativa para volver a aplicar la configuración, si es necesario
  • Scripts requieren una lógica personalizada para detectar y corregir la desviación de la configuración

Enfoque declarativo (Windows PowerShell DSC)

  • Las configuraciones definen los que se debe hacer
  • Las configuraciones son fáciles de entender
  • Las configuraciones se vuelven a aplicar, según sea necesario, en el intervalo que se elija
  • Las configuraciones utilizan la lógica integrada en los recursos DSC para detectar y corregir la desviación de la configuración

DSC se basa en los recursos, que son los bloques de construcción imperativos que se utilizan para crear configuraciones. DSC, de forma predeterminada, incluye recursos que se pueden utilizar para administrar componentes básicos del sistema operativo Windows, como servicios, archivos, configuraciones de registro. Sin embargo, el poder real de DSC reside en el hecho de que cualquiera puede crear recursos. Además, hay comunidades en crecimiento donde puedes compartir y descargar recursos de DSC para configurar una variedad de aplicaciones y componentes dentro de su organización.

Debido a que las configuraciones puede cambiar involuntariamente con el tiempo, DSC puede volver a aplicar de forma automática cualquier configuración implementada siempre que detecte que el sistema se ha desviado del estado deseado. DSC también es muy escalable, y puede ser utilizado en una variedad de entornos, grandes o pequeños, centralizados o descentralizados.

DSC no requiere que los sistemas pertenezcan a un dominio de AD DS. Además, DSC se basa en estándares y se basa en el modelo de Infraestructura de Gestión Abierta (OMI). Por lo tanto, también puede ser utilizado para administrar cualquier sistema operativo con un servidor de Modelo de Información Común (CIM), compatible con OMI, como CentOS y otras plataformas de Linux.

Requerimientos para Windows PowerShell DSC

1.- Habilitar Windows Remote Management:

  • Set-WsManQuickConfig
  • AD DS Group Policy for domain-joined systems

2.- Configurar el Administrador de Configuración Local en sistemas objetivos (si es necesario)

3.- Instalar el módulo deseado:

  • Install-Module -Name xComputerManagement

4.- Crear y compilar una configuración en Windows PowerShell ISE

5.- Desplegar la configuración (utilizando método push):

  • Start-DscConfiguration

Autorizar y desplegar las configuraciones DSC para una organización requiere un proceso multipasos, que incluye:

1.- Habilitar Windows Remote Management. Debido a que DSC depende de la administración remota de Windows (WinRM), debe asegurarse de que los escuchas de WinRM estén configurados en los sistemas que se deseen administrar mediante DSC. De forma predeterminada, WinRM está habilitado en Windows Server 2012 R2 y sistemas más recientes, pero no en clientes con Windows 8.1 o Windows 10.

Se puede habilitar WinRM en sistemas individuales con el cmdlet Set-WSManQuickConfig, o se puede aprovechar la política de grupo para habilitar la escucha en los sistemas unidos al dominio.

2.- Configurar el administrador de configuración local. El agente del Administrador de Configuración Local (LCM) procesa las configuraciones DSC en los sistemas que se están administrando. Antes de comenzar a implementar configuraciones de DSC, se debe configurar el agente de LCM según las necesidades.

Se puede configurar LCM utilizando un archivo especial de Formato de Objeto Administrado (MOF) que establece los parámetros específicos del LCM, y luego poder aplicar la configuración usando el cmdlet Set-DscLocalConfiguration. Para la mayoría de las configuraciones, la configuración predeterminada del modo de inserción LCM es suficiente. La siguiente lista describe algunos de los parámetros específicos de LCM:

a) Modo de actualización: El agente LCM recibe configuraciones a través de este modo. De forma predeterminada, RefreshMode se establece en Push, lo que significa que aplica las configuraciones ejecutando el cmdlet Start-DscConfiguration en el sistema local o uno remoto. Un RefreshMode of Pull significa que el agente de LCM verifica regularmente un servidor HTTP remoto o un recurso de bloque de mensajes del servidor (SMB) para las configuraciones.

También es posible configurar RemoteMode como Desactivado, lo que evita que el agente LCM aplique cualquier configuración. El uso de DSC no requiere configurar un servidor de extracción. Sin embargo, los servidores de extracción pueden ser beneficiosos en entornos grandes y distribuidos.

b) RefreshFrecuencyMins: Este es el intervalo de tiempo, en minutos, en el que el LCM sondea el servidor HTTP remoto o el recurso compartido de SMB para las configuraciones. Cuando se configura en modo Push, este valor se ignora. El valor predeterminado es 30.

c) Modo de configuración: Este modo indica la acción que realiza el agente LCM al aplicar configuraciones. De forma predeterminada, el agente LCM está configurado para ApplyAndMonitor, lo que significa que el agente LCM aplica la configuración inicial, pero solo registra las desviaciones futuras. Un ConfigurationMode de AppyAndAutoCorrect significa que el agente LCM aplica la configuración inicial y corrige de forma automática cualquier desviación futura.

d) ConfigurationModeFreqencyMins: Este es el intervalo de tiempo, en minutos, en el que el LCM verifica y vuelve a aplicar las configuraciones. Por defecto, este valor es 15.

3.- Instalar los módulos deseados. Los módulos desarrollados para DSC están disponibles en la Galería de Windows PowerShell. Para instalar módulos desde la Galería de Windows PowerShell, es necesario el módulo PowerShellGet, que incluye la versió 5.0 de PS. Opcionalmente, se puede instalar el módulo PowerShellGet para Windows PowerShell 4.0 descargando un instalador MSI.

El módulo PowerShellGet incluye los cmdlets Find-Module y Install-Module necesarios para la instalación de un módulo desde la Galería de Windows PowerShell. Para instalar la última versión del módulo xComputerManagement, se puede ejecutar el siguiente comando de Windows PowerShell:

Install-Module -Name xComputerManagement

Es posible que aparezca un error al no contar con el proveedor NuGet, en ese caso, presionamos Sí (s) para instalarlo y lo confirmamos después.

La ejecución de este comando creará una nueva carpeta llamada xComputerManagement en c:\Archivos de Programa\WindowsPowerShell\Modules. Si es necesario, se puede copiar la carpeta xExchange manualmente a cualquier sistema destino que no tenga PowerShellGet. Esto puede ser necesario en sistemas en los que no se puede instalar PowerShellGet o no cuentan con acceso a Internet.

4.- Crear y compilar una configuración DSC básica. Una vez que se haya compilado con todos los requisitos previos y se instalaron los módulos deseados en los servidores de destino que se requieren configurar, se puede comenzar a crear las secuencias de comandos de configuración por medio de recursos DSC. Los scripts de configuración no modifican los sistemas de destino. Solo son una plantilla que se usa para compilar un archivo MOF que el agente LCM inserta o extrae del sistema de destino. Se puede crear scripts de configuración en cualquier script de Windows PowerShell o editor de texto. La configuración se llama, al igual que una función, para compilar los datos de configuración en archivos MOF para cada nodo definido.

5.- Implementar las configuraciones a los servidores deseados. Una vez que se compiló la configuración en un archivo .mof, se puede enviar la configuración al LCM en el nodo de destino mediante el uso del cmdlet Start-DscConfiguration. La ejecución de este comando invoca al agente LCM para procesar la configuración y, de ser necesario, realiza cambios en el nodo destino. Para implementar una confguración llamada Hostname-SRV1.mof, se ejecuta el siguiente comando:

Start-DscConfiguration –Wait –Verbose –Path C:\DSC –ComputerName Hostname-SRV1

Se puede ejecutar el comando con los parámetros -Wait y -Verbose para poder ver los pasos detallados que el agente de LCM en el nodo de destino está procesando. El uso de estos parámetros es esencial cuando se requiere solucionar problemas en la implementación de la configuración.

En cualquier momento, luego de haber implementado una configuración, se puede ejecutar el cmdlet Test-DscConfiguration para verificar si el nodo de destino está en el estado deseado. Test-DscConfiguration devolverá un estado True si el sistema está en el estado deseado, de lo contrario devolverá False.

Implementando Windows PowerShell DSC

Para crear una configuración DSC en un archivo .ps1, se requieren tres elementos:

  • Configuración. Identificar el archivo como archivo de configuración
  • Nodo. Identificar la computadora o máquina virtual para aplicar la configuración
  • Recurso. Identificar el bloque de propiedades a configurar

Un ejemplo de un archivo .ps1 para configuración DSC es:

Configuration EjemploDscConfiguration {
Node "Hostname-SVR1" {
WindowsFeature MyFeatureInstance {
Ensure = "Present"
Name = "RSAT"
}
WindowsFeature My2ndFeatureInstance {
Ensure = "Present"
Name = "Bitlocker"
}
}
}

Sintaxis de configuración

El script mostrado es un ejemplo de configuración simple. Un script de configuración consta de al menos tres partes:

  • El bloque de configuración. Este es el bloque de script más externo. Se define utilizando la palabra clave de configuración y proporcionando un nombre. En el ejemplo anterior, el nombre de la configuración es EjemploDscConfiguration.
  • Uno o más bloques de nodo. Estos definen los nodos (computadoras o máquinas virtuales) que está configurando. En la configuración de ejemplo anterior, existe un bloque de nodo que se dirige a una computadora llamada Hostname-SRV1.
  • Uno o más bloques de recursos. Aquí es donde la configuración establece las propiedades de los recursos que está configurando. En el ejemplo anterior, existen dos bloques de recursos, cada uno de ellos llama al recurso WindowsFeature.

Antes de poder utilizar una configuración, es necesario compilarla desde un archivo MOF. Para hacerlo, llame a la configuración de la misma manera que llamaría a una función de Windows PowerShell.

Nota: Para llamar a una configuración, la función debe estar en el ámbito global. Esto se puede hacer al utilizar «.\» al llamar al archivo de configuración, o ejecutando el archivo de configuración presionando F5 o haciendo clic en el botón Ejecutar secuencia de comandos en el entorno de secuencias de comandos integrado (ISE) de Windows PowerShell.

Al llamar a la configuración, se crea:

  • Una carpeta en el directorio que se está utilizando con el mismo nombre de la configuración.
  • Un archivo llamada NodeName.mof en el directorio de Nombre de Configuración, donde NodeName es el nombre del nodo objetivo de la configuración. Si se tiene más de un nodo, un archivo MOF se creará para cada nodo.
Gracias por apoyar el libre conocimiento con tu donación!
Bitcoin: bc1q4sw9260twfcxatj8mjp7358cyvrf8whzlelyhj
Ethereum: 0xFb93D2a3c9d1A0b83EE629c2dE1725BCa192e581
Litecoin: LbFduJmHvQXcpCnwfUT7aJ4DYoWSL3iQw8
Dogecoin: D7QQVqNR5rk215A4zd2gyzV9P2bLQtZHFV
Transferencia bancaria en México:
Cuenta CLABE: 646180224401848086 Nombre: Masterhacks LATAM Banco: STP

Unete a nuestros grupos:
WhatsApp: https://chat.whatsapp.com/C8fqiz3aDDc58VRRd1vdrb
Telegram: https://t.me/masterhacks_net
Canal de WhatsApp https://whatsapp.com/channel/0029VaBBLCn5vKAH9NOWCl3K

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *