Powershell Desired State Configuration (DSC)
DSC es la tecnología de Powershell que nos permite, a través de scripts, mantener un estado deseado de configuración en los equipos.
De este modo podemos lograr un estado de cumplimiento que puede automatizarse para que se ejecute regularmente, permitiendo que nuestros equipos tengan siempre el estado de configuración deseada.
En esta nota mostramos un ejemplo básico de Powershell DSC que define como estado deseado la presencia de un rol determinado en un servidor.
Modos de configuración de DSC
Modo Push: un
administrador envía manualmente las configuraciones a los nodos. Este método es
manual y no garantiza que los equipos que estén apagados o desconectados en ese
momento reciban la configuración.
Modo Pull: se
crea un servidor (pull server) y los nodos lo contactan regularmente para
obtener su configuración.
Su principal ventaja es que cuando los equipos se conectan a
la red reciben la configuración deseada. Como desventaja requiere un equipo
configurado como Pull server.
DSC Resources
Los recursos de DSC representan lo que queremos configurar en cada nodo en forma forzada,
por ejemplo servicios, roles, archivos, etc.
Ejecutando Get-DSCResource podemos obtener una lista de recursos (entre los
que vemos Windows Feature, Service, File, WindowsProcess, etc).
Ejemplo: lista de recursos obtenida al ejecutar Get-DSCResource
- File
- SignatureValidation
- Archive
- Environment
- Group
- GroupSet
- Log
- Package
- ProcessSet
- Registry
- Script
- Service
- ServiceSet
- User
- WaitForAll
- WaitForAny
- WaitForSome
- WindowsFeature
- WindowsFeatureSet
- WindowsOptionalFeature
- WindowsOptionalFeatureSet
- WindowsPackageCab
- WindowsProcess
Sintaxis del script
En la configuración siguiente, que llamamos TestConfig se
trata de forzar que en el nodo LON-SVR1 esté instalado el rol de DNS Server
(DNS)
Configuration TestConfig
{
Node “LON-SVR1”
{
WindowsFeature DNSExample
{
Ensure = “Present”
Name = “DNS” }
}
}
{
Node “LON-SVR1”
{
WindowsFeature DNSExample
{
Ensure = “Present”
Name = “DNS” }
}
}
NOTA: en Node podría usarse una variable previamente definida,
por ejemplo $Servers o eventualmente Localhost para que sirva en varios
equipos.
Antes de comenzar con la configuración verificamos que el rol DNS no está instalado en el servidor LON-SVR1
Antes de comenzar con la configuración verificamos que el rol DNS no está instalado en el servidor LON-SVR1
Consulta de Sintaxis para el Resource "WindowsFeature"
Mediante Get-DscResource windowsfeature -Syntax averiguamos la sintaxis para el recurso Feature. El resultado nos muestra las opciones "Name" y "Ensure" utilizadas en el script del ejemplo.
WindowsFeature [String]
#ResourceName
{
Name = [string]
[Credential = [PSCredential]]
[DependsOn = [string[]]]
[Ensure = [string]{ Absent | Present }]
[IncludeAllSubFeature = [bool]]
[LogPath = [string]]
[PsDscRunAsCredential = [PSCredential]]
[Source = [string]]
}
Preparación del Script:
El script se debe ejecutar como función. Una forma sencilla
de lograrlo es agregar el nombre de la función en la última línea del script
(TestConfig en el ejemplo)
En la figura siguiente vemos el script editado en Powershell ISE
Ejecución del script:
Lo ejecutamos mediante la sentencia C:\DSC\> .\TestConfig.ps1
Lo ejecutamos mediante la sentencia C:\DSC\> .\TestConfig.ps1
El script en sí no aplica la configuración, sino que crea un archivo MOF que es un archivo de texto con la configuración que se va a aplicar.
El archivo MOF podría crearse manualmente, aunque es más
sencillo seguir los pasos previos.
Puede verse el archivo MOF editado con Notepad.
A continuación se invoca el MOF usando el CMDLET
Start-DscConfiguration
No hay comentarios:
Publicar un comentario