Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

La configuración de estado deseado (DSC) de PowerShell simplifica enormemente el trabajo de implementar y configurar el sistema operativo, las funciones del servidor y las aplicaciones cuando se tienen cientos de servidores.

Pero cuando se utiliza DSC local, es decir. no en MS Azure, hay un par de matices. Se notan especialmente si la organización es grande (a partir de 300 estaciones de trabajo y servidores) y aún no ha descubierto el mundo de los contenedores:

  • No hay informes completos sobre el estado de los sistemas. Si la configuración requerida no se ha aplicado en algunos servidores, sin estos informes no lo sabremos. Es bastante difícil obtener información del servidor de informes integrado y, para una gran cantidad de hosts, también puede llevar mucho tiempo.
  • Carece de escalabilidad y tolerancia a fallos. Es imposible construir una granja de servidores web de extracción DSC que tenga una única base de datos tolerante a fallas y un almacenamiento común de archivos mof para configuraciones, módulos y claves de registro.

Hoy te contaré cómo puedes resolver el primer problema y obtener datos para generar informes. Todo sería más sencillo si se pudiera utilizar SQL como base de datos. EM promesas soporte integrado solo en Windows Server 2019 o en la compilación Windows Server 1803. Obtenga datos utilizando el proveedor OleDB también no funcionaporque DSC Server utiliza un parámetro con nombre que no es totalmente compatible con OleDbCommand.

Encontré este método: para aquellos que usan Windows Server 2012 y 2016, pueden melodía utilizando una base de datos SQL como backend para el servidor de consultas DSC. Para ello crearemos un “proxy” en forma de archivo .mdb con tablas asociadas, que redirigirá los datos recibidos de los informes del cliente a la base de datos del servidor SQL.

Nota: Para Windows Server 2016 debe utilizar AccesoBase de datosEngine2016x86porque Microsoft.Jet.OLEDB.4.0 ya no es compatible.

No entraré en detalles sobre el proceso de implementación de un servidor pull DSC, está muy bien descrito. aquí. Sólo señalaré un par de puntos. Si implementamos el extractor de DSC en el mismo servidor web con WSUS o Kaspersky Security Center, entonces en el script de creación de configuración debemos cambiar los siguientes parámetros:

  1. UseSecurityBestPractices     = $false

    De lo contrario, TLS 1.0 se desactivará y no podrá conectarse a la base de datos SQL. Kaspersky Security Center tampoco funcionará (el problema debería resolverse en Kaspersky Security Center v11).

  2. Enable32BitAppOnWin64   = $true

    Si no realiza este cambio, no podrá ejecutar el servidor AppPool DSC en IIS con WSUS.

  3. Al instalar DSC Server con WSUS, deshabilite el almacenamiento en caché estático y dinámico para el sitio DSC.

Pasemos a configurar el servidor DSC para utilizar la base de datos SQL.

Creando una base de datos SQL

  1. Creemos una base de datos SQL vacía llamada DSC.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  2. Creemos una cuenta para conectarnos a esta base de datos. Primero, verifique que el servidor SQL permita la autenticación de cuentas de Windows y SQL.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  3. Vaya a la sección Mapeo de usuarios. Seleccione la base de datos, en este caso DSC. Otorgamos los derechos del propietario de la base de datos.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  4. Finalizar.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

Crear un esquema para la base de datos DSC

Hay dos formas de crear un esquema para una base de datos DSC:

  • de forma independiente, a través de un script TSQL
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[Devices](
    [TargetName] [nvarchar](255) NOT NULL,
    [ConfigurationID] [nvarchar](255) NOT NULL,
    [ServerCheckSum] [nvarchar](255) NOT NULL,
    [TargetCheckSum] [nvarchar](255) NOT NULL,
    [NodeCompliant] [bit] NOT NULL,
    [LastComplianceTime] [datetime] NULL,
    [LastHeartbeatTime] [datetime] NULL,
    [Dirty] [bit] NOT NULL,
    [StatusCode] [int] NULL
    ) ON [PRIMARY]
    GO
     
    CREATE TABLE [dbo].[RegistrationData](
    [AgentId] [nvarchar](255) NOT NULL,
    [LCMVersion] [nvarchar](255) NULL,
    [NodeName] [nvarchar](255) NULL,
    [IPAddress] [nvarchar](255) NULL,
    [ConfigurationNames] [nvarchar](max) NULL
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GO
     
    CREATE TABLE [dbo].[StatusReport](
    [JobId] [nvarchar](50) NOT NULL,
    [Id] [nvarchar](50) NOT NULL,
    [OperationType] [nvarchar](255) NULL,
    [RefreshMode] [nvarchar](255) NULL,
    [Status] [nvarchar](255) NULL,
    [LCMVersion] [nvarchar](50) NULL,
    [ReportFormatVersion] [nvarchar](255) NULL,
    [ConfigurationVersion] [nvarchar](255) NULL,
    [NodeName] [nvarchar](255) NULL,
    [IPAddress] [nvarchar](255) NULL,
    [StartTime] [datetime] NULL,
    [EndTime] [datetime] NULL,
    [Errors] [nvarchar](max) NULL,
    [StatusData] [nvarchar](max) NULL,
    [RebootRequested] [nvarchar](255) NULL
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GO
  • importe datos desde dispositivos vacíos.mdb como parte del módulo PS PSDesiredStateConfiguration a través del Asistente de importación de datos SQL.

    El Devices.mdb con el que trabajaremos se encuentra en C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.

  1. Para importar datos, ejecute el Asistente de importación y exportación de SQL Server.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  2. Elegimos de dónde obtendremos los datos; en nuestro caso es una base de datos de Microsoft Access. Haga clic en Siguiente.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  3. Seleccione el archivo desde el que importamos el diagrama.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  4. Indicamos dónde importar; para nosotros es una base de datos SQL.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  5. Seleccione el servidor SQL (Nombre del servidor) y la base de datos a la que importaremos los datos (Base de datos).

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  6. Seleccione la opción Copiar datos de una o más tablas o vistas (copiar datos de tablas o vistas).

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  7. Seleccionamos las tablas desde las que importaremos el esquema de la base de datos.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  8. Marque la casilla de verificación Ejecutar inmediatamente y haga clic en Finalizar.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  9. Finalizar.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  10. Como resultado, las tablas deberían aparecer en la base de datos DSC.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

Configurar un archivo “proxy” .mdb

Creando una conexión ODBC a un servidor SQL. Se supone que MS Access no está instalado en el servidor que ejecuta DSC, por lo que la configuración de bases de datos.mdb se realiza en un host intermedio con MS Access instalado.

Creemos una conexión ODBC del sistema al servidor SQL (el bitness de la conexión debe coincidir con el bitness de MS Access: 64 o 32). Se puede crear usando:
- Cmdlet de PowerShell:

Add-OdbcDsn –Name DSC –DriverName 'SQL Server' –Platform '<64-bit or 32-bit>' –DsnType System –SetPropertyValue @('Description=DSC Pull Server',"Server=<Name of your SQL Server>",'Trusted_Connection=yes','Database=DSC') –PassThru

— o manualmente, usando el asistente de conexión:

  1. Abra Herramientas administrativas. Seleccionamos fuentes de datos ODBC según la versión de MS Access instalada. Vaya a la pestaña DSN del sistema y cree una conexión de sistema (Agregar).

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  2. Indicamos que nos conectaremos al servidor SQL. Haga clic en Finalizar.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  3. Especifique el nombre y el servidor al que conectarse. Luego será necesario crear una conexión con los mismos parámetros en el servidor DSC.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  4. Indicamos que para conectarnos al servidor SQL utilizamos un login previamente creado con el nombre DSC.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  5. Especificamos la base de datos en la configuración de conexión DSC.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  6. Haga clic en Finalizar.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  7. Antes de completar la configuración, verificamos que la conexión esté funcionando (Test Data Source).

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  8. Finalizar.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

Creación de una base de datos devices.mdb en MS Access. Inicie MS Access y cree una base de datos vacía llamada devices.mdb.

Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  1. Vaya a la pestaña Datos externos y haga clic en Base de datos ODBC. En la ventana que aparece, seleccione Crear una tabla vinculada para conectarse a la fuente de datos.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  2. En la nueva ventana, seleccione la pestaña Fuente de datos de la máquina y haga clic en Aceptar. En la nueva ventana, ingrese las credenciales para conectarse al servidor SQL.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  3. Seleccione las tablas que deben vincularse. Marque la casilla Guardar contraseña y haga clic en Aceptar. Guarde la contraseña cada vez para las tres tablas.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  4. En los índices debe seleccionar lo siguiente:
    — TargetName para la tabla dbo_Devices;

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

    — Nombre de nodo o dirección IP para dbo_RegistrationData;

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

    — Nombre de nodo o dirección IP para dbo_StatusReport.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  5. Cambiemos el nombre de las tablas en MS Access, a saber: eliminemos el prefijo dbo_ para que DSC pueda usarlas.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  6. Finalizar.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  7. Guarde el archivo y cierre MS Access. Ahora copiamos el devices.mdb resultante al servidor DSC (por defecto en C:Program FilesWindowsPowershellDSCService) y reemplazamos el existente con él (si existe).

Configuración del servidor DSC para usar SQL

  1. Volvemos al servidor DSC. Para conectarnos al servidor SQL con nuestro archivo proxy, creemos una nueva conexión ODBC en el servidor DSC. El nombre, la profundidad de bits y la configuración de conexión deben ser los mismos que cuando se creó el archivo MDB. Puede copiar los dispositivos vacíos ya configurados.mdb desde aquí.
  2. Para usar devices.mdb, debe realizar cambios en web.config del servidor de extracción DSC (el valor predeterminado es C:inetpubPSDSCPullServerweb.config):

- para servidor de Windows 2012

<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">

- para servidor de Windows 2016

<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">

Esto completa la configuración del servidor DSC.

Comprobación de la funcionalidad del servidor DSC

  1. Comprobemos que se pueda acceder al servidor DSC a través de un navegador web.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  2. Ahora verifiquemos si el servidor de extracción DSC funciona correctamente. Para hacer esto, el módulo xPSDesiredStateConfiguration incluye el script pullserversetuptests.ps1. Antes de ejecutar este script, debe instalar un módulo de Powershell llamado Pester. Instálelo Instalar-Módulo -Nombre Pester.
  3. Abra C: Archivos de programa Windows PowerShellModulesxPSDesiredStateConfiguration<versión del módulo>DSCPullServerSetupPullServerDeploymentVerificationTest (en el ejemplo versión 8.0.0.0.0).

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  4. Abra PullServerSetupTests.ps1 y verifique la ruta al web.config del servidor DSC. La ruta a web.config, que comprobará el script, está resaltada en rojo. Si es necesario, cambiamos este camino.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  5. Ejecute pullserversetuptests.ps1
    Invocar-Pester.PullServerSetupTests.ps1
    Todo funciona

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

  6. En SQL Management Studio vemos que los hosts administrados envían informes al servidor de informes DSC y los datos terminan en la base de datos DSC en el servidor SQL.

    Archivo y configuración del estado deseado de PowerShell: parte 1. Configuración del servidor de extracción de DSC para que funcione con una base de datos SQL

Eso es todo. En los siguientes artículos planeo contarles cómo crear informes sobre los datos obtenidos y abordaré temas relacionados con la tolerancia a fallas y la escalabilidad.

Fuente: habr.com

Añadir un comentario