PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

PowerShell Desired State Configuration (DSC) vereinfacht die Bereitstellung und Konfiguration des Betriebssystems, der Serverrollen und Anwendungen erheblich, wenn Sie über Hunderte von Servern verfügen.

Bei der Verwendung von DSC vor Ort, d. h. nicht in MS Azure, es gibt ein paar Nuancen. Besonders auffällig sind sie, wenn die Organisation groß ist (ab 300 Workstations und Server) und die Welt der Container noch nicht für sich entdeckt hat:

  • Es gibt keine vollständigen Berichte über den Status der Systeme. Wenn auf einigen Servern die erforderliche Konfiguration nicht angewendet wurde, wissen wir ohne diese Berichte nichts davon. Es ist ziemlich schwierig, Informationen vom integrierten Berichtsserver zu erhalten, und bei einer großen Anzahl von Hosts kann es auch lange dauern.
  • Es mangelt an Skalierbarkeit und Fehlertoleranz. Es ist unmöglich, eine Farm von DSC-Pull-Webservern aufzubauen, die über eine einzige fehlertolerante Datenbank und einen gemeinsamen Speicher von MOF-Dateien für Konfigurationen, Module und Registrierungsschlüssel verfügen.

Heute erzähle ich Ihnen, wie Sie das erste Problem lösen und Daten für die Berichterstellung erhalten. Alles wäre einfacher, wenn SQL als Datenbank verwendet werden könnte. MS Versprechen Integrierte Unterstützung nur in Windows Server 2019 oder in Build Windows Server 1803. Rufen Sie Daten auch mit dem OleDB-Anbieter ab nicht funktionierenweil DSC Server einen benannten Parameter verwendet, der von OleDbCommand nicht vollständig unterstützt wird.

Ich habe diese Methode gefunden: Für diejenigen, die Windows Server 2012 und 2016 verwenden, können Sie eingerichtet Verwendung einer SQL-Datenbank als Backend für den DSC-Abfrageserver. Dazu erstellen wir einen „Proxy“ in Form einer .mdb-Datei mit zugehörigen Tabellen, der die von Client-Berichten erhaltenen Daten an die SQL-Server-Datenbank umleitet.

Hinweis: Für Windows Server 2016 müssen Sie verwenden AccessDatabaseEngine2016x86weil Microsoft.Jet.OLEDB.4.0 nicht mehr unterstützt wird.

Ich werde nicht näher auf den Prozess der Bereitstellung eines DSC-Pull-Servers eingehen, er ist sehr gut beschrieben hier. Ich möchte nur ein paar Punkte anmerken. Wenn wir den DSC-Puller auf demselben Webserver mit WSUS oder Kaspersky Security Center bereitstellen, müssen wir im Konfigurationserstellungsskript die folgenden Parameter ändern:

  1. UseSecurityBestPractices     = $false

    Andernfalls wird TLS 1.0 deaktiviert und Sie können keine Verbindung zur SQL-Datenbank herstellen. Auch Kaspersky Security Center funktioniert nicht (das Problem sollte in Kaspersky Security Center v11 behoben sein).

  2. Enable32BitAppOnWin64   = $true

    Wenn Sie diese Änderung nicht vornehmen, können Sie den AppPool DSC-Server nicht auf IIS mit WSUS ausführen.

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

Fahren wir mit der Einrichtung des DSC-Servers für die Verwendung der SQL-Datenbank fort.

Erstellen einer SQL-Datenbank

  1. Erstellen wir eine leere SQL-Datenbank mit dem Namen DSC.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  2. Erstellen wir ein Konto, um eine Verbindung zu dieser Datenbank herzustellen. Überprüfen Sie zunächst, ob der SQL-Server die Authentifizierung sowohl von Windows- als auch von SQL-Konten zulässt.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  3. Gehen Sie zum Abschnitt „Benutzerzuordnung“. Wählen Sie die Datenbank aus, in diesem Fall DSC. Wir vergeben die Rechte an den Datenbankeigentümer.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  4. Fertig.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

Erstellen eines Schemas für die DSC-Datenbank

Es gibt zwei Möglichkeiten, ein Schema für eine DSC-Datenbank zu erstellen:

  • unabhängig, über ein TSQL-Skript
    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 der leeren devices.mdb als Teil des PS-Moduls PSDesiredStateConfiguration über den SQL-Datenimport-Assistenten.

    Die Devices.mdb, mit der wir arbeiten werden, befindet sich in C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.

  1. Um Daten zu importieren, führen Sie den SQL Server-Import- und Export-Assistenten aus.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  2. Wir entscheiden, woher wir die Daten beziehen – in unserem Fall handelt es sich um eine Microsoft Access-Datenbank. Weiter klicken.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

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

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  4. Wir geben an, wo importiert werden soll – bei uns handelt es sich um eine SQL-Datenbank.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

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

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  6. Wählen Sie die Option Daten aus einer oder mehreren Tabellen oder Ansichten kopieren (Daten aus Tabellen oder Ansichten kopieren).

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  7. Wir wählen die Tabellen aus, aus denen wir das Datenbankschema importieren.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  8. Aktivieren Sie das Kontrollkästchen „Sofort ausführen“ und klicken Sie auf „Fertig stellen“.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  9. Fertig.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  10. Als Ergebnis sollten Tabellen in der DSC-Datenbank erscheinen.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

Einrichten einer .mdb-„Proxy“-Datei

Erstellen einer ODBC-Verbindung zu einem SQL-Server. Es wird davon ausgegangen, dass MS Access nicht auf dem Server installiert ist, auf dem DSC ausgeführt wird. Die Einrichtung von „databases.mdb“ erfolgt daher auf einem Zwischenhost, auf dem MS Access installiert ist.

Erstellen wir eine System-ODBC-Verbindung zum SQL-Server (die Bitzahl der Verbindung muss mit der Bitzahl von MS Access übereinstimmen – 64 oder 32). Es kann erstellt werden mit:
- Powershell-Cmdlet:

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

– oder manuell mit dem Verbindungsassistenten:

  1. Öffnen Sie Verwaltungstools. Wir wählen ODBC-Datenquellen abhängig von der Version des installierten MS Access aus. Gehen Sie zur Registerkarte System-DSN und erstellen Sie eine Systemverbindung (Hinzufügen).

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  2. Wir geben an, dass wir eine Verbindung zum SQL-Server herstellen. Klicken Sie auf Fertig stellen.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  3. Geben Sie den Namen und den Server an, zu dem eine Verbindung hergestellt werden soll. Anschließend muss eine Verbindung mit den gleichen Parametern auf dem DSC-Server erstellt werden.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  4. Wir weisen darauf hin, dass wir für die Verbindung zum SQL-Server ein zuvor erstelltes Login mit dem Namen DSC verwenden.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  5. Die Datenbank legen wir in den DSC-Verbindungseinstellungen fest.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  6. Klicken Sie auf Fertig stellen.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  7. Bevor wir die Einrichtung abschließen, prüfen wir, ob die Verbindung funktioniert (Datenquelle testen).

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  8. Fertig.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

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

PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  1. Gehen Sie zur Registerkarte Externe Daten und klicken Sie auf ODBC-Datenbank. Wählen Sie im angezeigten Fenster die Option „Verknüpfte Tabelle erstellen“ aus, um eine Verbindung zur Datenquelle herzustellen.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  2. Wählen Sie im neuen Fenster die Registerkarte Maschinendatenquelle aus und klicken Sie auf OK. Geben Sie im neuen Fenster die Anmeldeinformationen ein, um eine Verbindung zum SQL-Server herzustellen.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  3. Wählen Sie die Tabellen aus, die verknüpft werden müssen. Aktivieren Sie das Kontrollkästchen „Passwort speichern“ und klicken Sie auf „OK“. Speichern Sie das Passwort jedes Mal für alle drei Tabellen.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  4. In den Indizes müssen Sie Folgendes auswählen:
    – TargetName für die dbo_Devices-Tabelle;

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

    – NodeName oder IPAddress für dbo_RegistrationData;

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

    – NodeName oder IPAddress für dbo_StatusReport.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  5. Benennen wir die Tabellen in MS Access um, nämlich: Entfernen Sie das dbo_-Präfix, damit DSC sie verwenden kann.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  6. Fertig.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  7. Speichern Sie die Datei und schließen Sie MS Access. Nun kopieren wir die resultierende devices.mdb auf den DSC-Server (standardmäßig in C:ProgrammeWindowsPowershellDSCService) und ersetzen die vorhandene durch diese (falls vorhanden).

Konfigurieren des DSC-Servers für die 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. Name, Bittiefe und Verbindungseinstellungen müssen mit denen beim Erstellen der MDB-Datei übereinstimmen. Sie können die bereits konfigurierte leere devices.mdb von hier kopieren.
  2. Um devices.mdb zu verwenden, müssen Sie Änderungen an der web.config des DSC-Pull-Servers vornehmen (Standard ist C:inetpubPSDSCPullServerweb.config):

- für Windows Server 2012

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

- für Windows Server 2016

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

Damit ist die Einrichtung des DSC-Servers abgeschlossen.

Überprüfung der Funktionalität des DSC-Servers

  1. Überprüfen wir, ob der DSC-Server über einen Webbrowser zugänglich ist.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  2. Überprüfen wir nun, ob der DSC-Pull-Server ordnungsgemäß funktioniert. Zu diesem Zweck enthält das xPSDesiredStateConfiguration-Modul das Skript pullserversetuptests.ps1. Bevor Sie dieses Skript ausführen, müssen Sie ein Powershell-Modul namens Pester installieren. Installieren Sie es Install-Module -Name Pester.
  3. Öffnen Sie C:ProgrammeWindowsPowerShellModulesxPSDesiredStateConfiguration<Modulversion>DSCPulllServerSetupPullServerDeploymentVerificationTest (im Beispiel Version 8.0.0.0.0).

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die 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, die das Skript prüft, ist rot hervorgehoben. Bei Bedarf ändern wir diesen Weg.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

  5. Führen Sie pullserversetuptests.ps1 aus
    Invoke-Pester.PullServerSetupTests.ps1
    Все работает.

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

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

    PowerShell Desired State-Konfiguration und -Datei: Teil 1. Konfigurieren des DSC Pull Servers für die Arbeit mit einer SQL-Datenbank

Das ist alles. In den folgenden Artikeln möchte ich Ihnen erklären, wie Sie Berichte über die erhaltenen Daten erstellen, und ich werde auf Fragen der Fehlertoleranz und Skalierbarkeit eingehen.

Source: habr.com

Kommentar hinzufügen