PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

PowerShell Desired State Configuration (DSC) vereinfacht die Bereitstellung und Konfiguration von Betriebssystemen, Serverrollen und Anwendungen erheblich, wenn Sie Hunderte von Servern haben.

Bei der Verwendung von DSC vor Ort, das heißt nicht in MS Azure, treten jedoch einige Nuancen auf. Diese sind besonders spürbar, wenn die Organisation groß ist (ab 300 Arbeitsplätzen und Servern) und sie noch nicht die Welt der Container eröffnet hat:

  • Es fehlen umfassende Berichte über den Systemstatus. Wenn die benötigte Konfiguration auf bestimmten Servern nicht angewendet wurde, erfahren wir das ohne diese Berichte nicht. Die Informationen von dem integrierten Berichtserver zu erhalten, ist ziemlich schwierig, und für eine große Anzahl von Hosts zudem sehr langwierig.
  • Es fehlt an Skalierbarkeit und Ausfallsicherheit. Es ist nicht möglich, einen Cluster von DSC-überwachenden Webservern mit einer einzigen ausfallsicheren Datenbank und einem gemeinsamen Speicher für mof-Konfigurationsdateien, Module und Registrierungsschlüssel aufzubauen.

Heute werde ich darüber sprechen, wie das erste Problem gelöst werden kann und Daten für den Berichtsbau erhalten werden können. Es wäre alles einfacher, wenn SQL als Datenbank verwendet werden könnte. MS verspricht bietet eine integrierte Unterstützung nur in Windows Server 2019 oder in der Windows Server-Version 1803. Daten über den OleDB-Provider abzurufen, ist auch nicht möglich, da der DSC-Server einen benannten Parameter verwendet, der von OleDbCommand nicht vollständig unterstützt wird.

Ich habe folgenden Weg gefunden: Für diejenigen, die Windows Server 2012 und 2016 verwenden, ist es möglich, angepasst werden die Verwendung einer SQL-Datenbank als Backend für den überwachenden DSC-Server. Zu diesem Zweck erstellen wir einen „Proxy“ in Form einer .mdb-Datei mit verbundenen Tabellen, der die von den Kundenberichten erhaltenen Daten an die SQL-Datenbank weiterleitet.

Hinweis: Für Windows Server 2016 muss AccessDatabaseEngine2016x86, da Microsoft.Jet.OLEDB.4.0 nicht mehr unterstützt wird.

Ich werde nicht detailliert auf den Bereitstellungsprozess des überwachenden DSC-Servers eingehen, dieser ist sehr gut beschrieben hier. Ich möchte nur ein paar Punkte erwähnen. Wenn wir den überwachenden DSC auf demselben Webserver wie WSUS oder Kaspersky Security Center bereitstellen, müssen die folgenden Parameter im Konfigurationsskript geändert werden:

  1. UseSecurityBestPractices = $false

    Andernfalls wird TLS 1.0 deaktiviert, und Sie können sich nicht mit der SQL-Datenbank verbinden. Kaspersky Security Center wird auch nicht funktionieren (das Problem sollte in Kaspersky Security Center v11 behoben werden).

  2. Enable32BitAppOnWin64 = $true

    Wenn diese Änderung nicht vorgenommen wird, kann der AppPool des DSC-Servers auf IIS mit WSUS nicht gestartet werden.

  3. Deaktivieren Sie bei der Installation des DSC-Servers zusammen mit WSUS das statische und dynamische Caching für die DSC-Website.

Lassen Sie uns den DSC-Server zur Nutzung der SQL-Datenbank konfigurieren.

Erstellen einer SQL-Datenbank

  1. Wir werden eine leere SQL-Datenbank mit dem Namen DSC erstellen.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  2. Erstellen Sie ein Konto zum Verbinden mit dieser Datenbank. Überprüfen Sie im Voraus, ob auf dem SQL-Server die Authentifizierung sowohl für Windows- als auch SQL-Konten aktiviert ist.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  3. Gehen Sie zum Abschnitt Benutzerzuordnung. Wählen Sie die Datenbank aus, in diesem Fall – DSC. Gewähren Sie die Berechtigung als Datenbankbesitzer.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  4. Fertig.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

Erstellen eines Schemas für die DSC-Datenbank

Ein Schema für die DSC-Datenbank kann auf zwei Arten erstellt werden:

  • selbständig, über ein Skript in 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
  • Importieren Sie Daten aus einer leeren devices.mdb im PS-Modul PSDesiredStateConfiguration über den SQL-Datenimportassistenten.

    Das devices.mdb, mit dem wir arbeiten werden, befindet sich in C:\Windows\SysWOW64\WindowsPowerShell\v1.0\Modules\PSDesiredStateConfiguration\PullServer.

  1. Um Daten zu importieren, starten Sie den SQL Server Import- und Export-Assistenten.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  2. Wählen Sie aus, woher wir die Daten beziehen – in unserem Fall ist es eine Microsoft Access-Datenbank. Klicken Sie auf Weiter.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  3. Wählen Sie die Datei aus, von der wir das Schema importieren.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  4. Geben Sie an, wo importiert werden soll – in unserem Fall die SQL-Datenbank.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  5. Wählen Sie den SQL-Server (Servername) und die Datenbank aus, in die wir die Daten importieren möchten (Datenbank).

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  6. Wählen Sie die Option Daten aus einer oder mehreren Tabellen oder Ansichten kopieren (Copy data from one or more tables or views).

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  7. Wählen Sie die Tabellen aus, aus denen wir das Datenbank-Schema importieren werden.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  8. Setzen Sie ein Häkchen bei Sofort ausführen und klicken Sie auf Fertig.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  9. Fertig.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  10. In der DSC-Datenbank sollten nun Tabellen vorhanden sein.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

Konfiguration der .mdb „Proxy“-Datei

Erstellen einer ODBC-Verbindung zu einem SQL-Server. Es wird angenommen, dass MS Access nicht auf dem Server mit DSC installiert ist, daher wird die Einrichtung von databases.mdb auf einem zwischengeschalteten Host mit installiertem MS Access durchgeführt.

Lassen Sie uns eine systemweite ODBC-Verbindung zu einem SQL-Server erstellen (die Bit-Version der Verbindung muss mit der Bit-Version von MS Access – 64 oder 32 – übereinstimmen). Dies kann erfolgen durch:
— PowerShell-Cmdlet:

Add-OdbcDsn –Name DSC –DriverName 'SQL Server' –Platform '' –DsnType System –SetPropertyValue @('Description=DSC Pull Server',"Server=''",'Trusted_Connection=yes','Database=DSC') –PassThru

— oder manuell über den Verbindungsassistenten:

  1. Öffnen Sie die Verwaltungswerkzeuge. Wählen Sie die ODBC-Datenquellen in Abhängigkeit von der Version des installierten MS Access. Gehen Sie zum Tab System-DSN und erstellen Sie eine systemweite Verbindung (Hinzufügen).

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  2. Geben Sie an, dass wir uns mit dem SQL-Server verbinden. Klicken Sie auf Fertigstellen.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  3. Geben Sie den Namen und den Server für die Verbindung an. Später muss die Verbindung mit denselben Parametern auf dem DSC-Server erstellt werden.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  4. Geben Sie an, dass für die Verbindung zum SQL-Server der zuvor von uns erstellte Benutzer mit dem Namen DSC verwendet wird.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  5. Geben Sie die Datenbank in den Verbindungseinstellungen von DSC an.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  6. Klicken Sie auf Fertigstellen.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  7. Überprüfen Sie vor Abschluss der Einrichtung, ob die Verbindung funktioniert (Datenquelle testen).

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  8. Fertig.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

Erstellen einer Datenbank devices.mdb in MS Access. Starten Sie MS Access und erstellen Sie eine leere Datenbank mit dem Namen devices.mdb.

PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  1. Gehen Sie zum Tab Externe Daten, klicken Sie auf ODBC-Datenbank. Wählen Sie im sich öffnenden Fenster 'Verknüpfte Tabelle erstellen' zur Verbindung mit der Datenquelle.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  2. Wählen Sie im neuen Fenster den Tab Maschinen-Datenquelle und klicken Sie auf OK. Geben Sie im neuen Fenster die Anmeldeinformationen für die Verbindung zum SQL-Server ein.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  3. Wählen Sie die Tabellen aus, die verknüpft werden sollen. Aktivieren Sie das Kontrollkästchen Passwort speichern und klicken Sie auf OK. Das Passwort muss für alle drei Tabellen jedes Mal gespeichert werden.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  4. In den Indizes müssen die folgenden Optionen gewählt werden:
    — TargetName für die Tabelle dbo_Devices;

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

    — NodeName oder IPAddress für dbo_RegistrationData;

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

    — NodeName oder IPAddress für dbo_StatusReport.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  5. Benennen Sie die Tabellen in MS Access um, d.h. entfernen Sie das Präfix dbo_, damit DSC sie verwenden kann.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  6. Fertig.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  7. Speichern Sie die Datei und schließen Sie MS Access. Kopieren Sie nun die erstellte devices.mdb auf den DSC-Server (standardmäßig in C:Program FilesWindowsPowershellDSCService) und ersetzen Sie damit die vorhandene (sofern vorhanden).

Einrichtung des DSC-Servers zur Verwendung von SQL

  1. Wir kehren zum DSC-Server zurück. Um mit unserer Proxy-Datei eine Verbindung zum SQL-Server herzustellen, erstellen wir eine neue ODBC-Verbindung auf dem DSC-Server. Der Name, die Bit-Version und die Verbindungseinstellungen sollten die gleichen sein wie bei der Erstellung der MDB-Datei. Sie können die bereits konfigurierte leere devices.mdb von hier kopieren.
  2. Um devices.mdb zu verwenden, müssen Änderungen an der web.config des abfragenden DSC-Servers vorgenommen werden (standardmäßig – C:inetpubPSDSCPullServerweb.config):

— für Windows Server 2012

— für Windows Server 2016

Damit ist die Konfiguration des DSC-Servers abgeschlossen.

Überprüfung der Funktionsfähigkeit des DSC-Servers

  1. Wir prüfen, ob der DSC-Server über den Webbrowser erreichbar ist.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  2. Jetzt überprüfen wir, ob der abfragende DSC-Server richtig funktioniert. Dazu gibt es im xPSDesiredStateConfiguration-Modul das Skript pullserversetuptests.ps1. Vor der Ausführung dieses Skripts muss das Powershell-Modul namens Pester installiert werden. Wir installieren es mit Install-Module -Name Pester.
  3. Öffnen Sie C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfigurationDSCPullServerSetupPullServerDeploymentVerificationTest (im Beispiel ist die Version 8.0.0.0.0).

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  4. Öffnen Sie PullServerSetupTests.ps1 und überprüfen Sie den Pfad zur web.config des DSC-Servers. Der Pfad zur web.config, den das Skript überprüfen wird, ist rot markiert. Ändern Sie diesen Pfad bei Bedarf.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  5. Führen Sie pullserversetuptests.ps1 aus
    Invoke-Pester .PullServerSetupTests.ps1
    Alles funktioniert.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

  6. Im SQL Management Studio sehen wir, dass die verwalteten Hosts Berichte an den DSC-Berichtsserver senden und die Daten in die DSC-Datenbank auf dem SQL-Server gelangen.

    PowerShell Desired State Configuration und ein Dateimanager: Teil 1. Einrichtung des DSC Pull Servers zur Arbeit mit einer SQL-Datenbank

Das ist alles. In den kommenden Artikeln plane ich, zu zeigen, wie man auf den erhaltenen Daten Berichte erstellt und auf Fragen zur Ausfallsicherheit und Skalierbarkeit einzugehen.

Quelle: habr.com

60GB SSD 8Gb DDR4