Blog

18/04/2017

Administración masiva con PowerShell – PowerShell DSC (parte 2/2)

El proceso de configuración masiva mediante DSC consta de dos partes, crear los ficheros MOF y desplegarlos.

Definir ficheros de configuración MOF

Los fichero de configuración para DSC se componen de un elemento principal configuration{}, y dentro de este elemento tendremos uno o varios elementos node{}, cada elemento node{} contiene uno o más ítem de configuración, cada ítem se corresponderá con una parte de la configuración deseada.

En el ejemplo de más adelante observamos que el documento se abre con un nodo Configuration ProbandoDSC {}

Inmediatamente después se definen los parámetros del fichero mediante param([string[]]$Computer) estos parámetros habrá que pasárselos cuando ejecutemos este elemento.

Una vez declarados los parámetros usamos el elemento Node $Computer {} utilizar el parámetro nos permitirá generar el fichero MOF para tantos equipos como contenga esta variable, en caso de ponerlo literalmente tendría que crear múltiples elementos node{}.

Dentro del elemento Node{} pondremos los ítems de configuración y sus valores, al declararlos primero se menciona la extensión que utiliza WindowsFeature/Service/Script y luego el nombre del ítem, como ServerBackup/Print/InstallBITS. Entre llaves pondremos los valores diciendo el nombre de la propiedad y sus valores:

        WindowsFeature ServerBackup {
            Ensure = 'Present'
            Name = 'Windows-Server-Backup'
        }

Cada ítem de configuración tiene descrito que propiedades y valores acepta, por ello hay que informarse con el proveedor de la extensión o en los sitios de información que nos provean.

Crear ficheros de configuración

Una vez hayamos terminado con la definición, en el final del script de PowerShell debemos llamar al elemento que hemos creado seguido de los parámetros que creamos convenientes, entre los que están los propios de powershell como -OutputPath c:\FicherosMOF o los definidos por nosotros como -computer LON-DC1,LON-SVR1. Una vez añadida la línea que llama al elemento, ejecutamos todo el script a la vez, cuando ejecutemos esto nos va a crear tantos ficheros como elementos node{} tengamos, en este caso al ser un parámetro nos va a crear tantos como valores pasemos al parámetro -computer que en el ejemplo son LON-DC1,LON-SVR1. Así que nos creara dos ficheros de configuración uno llamado LON-DC1.mof y otro llamado LON-SVR1.mof.

Configuration ProbandoDSC {
    param([string[]]$Computer
    )
    Node $Computer {
    
        WindowsFeature ServerBackup {
            Ensure = 'Present'
            Name = 'Windows-Server-Backup'
        }

        WindowsFeature Print {
            Ensure = 'Absent'
            Name = 'Print-Server'
        }

        WindowsFeature InstallBITS {
            Ensure = 'Present'
            Name = 'BITS'
        }

        Service BITS {
            Name = 'BITS'
            State = 'Running'
            StartupType = 'Automatic'
        }

        Script CarpetaLogs {
            GetScript = { @{} }
            TestScript = { Test-Path -Path C:\Logs }
            SetScript = { New-Item -Path C:\Logs -ItemType Directory }
        }
    }
}


ProbandoDSC -computer LON-DC1,LON-SVR1 -OutputPath c:\FicherosMOF

Desplegar los ficheros de configuración usando modelo Push

Una vez generados los ficheros lo siguiente es desplegarlos, para ello usamos el comando de PowerShell Start-DscConfiguration, con los parámetros que necesitemos entre ellos el parámetro -Path indica la ruta a la carpeta donde están los ficheros. Por defecto desplegara el fichero buscando el nombre de equipo basándose en el nombre de fichero. También podemos limitar la ejecución a unos equipos en concreto con el parámetro -ComputerName. El parámetro computername sirve para reducir la lista de los equipos que están en la carpeta que hemos indicado, pero deben de existir los ficheros de configuración con el mismo nombre que el que le pasamos en el parámetro.

Start-DscConfiguration -Path C:\FicherosMOF  
Start-DscConfiguration -Path C:\FicherosMOF -ComputerName LON-DC1 -wait -verbose

Una vez ejecutado esto el equipo de destino aplicará la configuración establecida en el fichero y periódicamente la comprobará y corregirá si ha cambiado. Esto es parametrizable también mediante DSC.

Conclusiones

Podemos ver que PowerShell DSC requiere de cierto aprendizaje y también del clásico prueba y error, pero sin demasiado esfuerzo podemos configurar muchos equipos. Además aporta un factor diferencial, y es que el mismo equipo se ocupa después de mantener esa configuración en el tiempo, con lo que nos reduce todos los problemas derivados por cambios en la configuración ocasionados por el factor humano, instalación de software o actualizaciones del sistema. Esta tecnología fue introducida en PowerShell 4 y en la versión 5 han introducido mejoras, pero en realidad lo único que necesita esta tecnología para estar más extendida es que nos acostumbremos a usarla.

 

 

 

Jonatan Alonso
Microsoft Lead Trainer

Análisis, Artículos , , , , , ,

Comenta esta información