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
Ich habe diese Methode gefunden: Für diejenigen, die Windows Server 2012 und 2016 verwenden, können Sie
Hinweis: Für Windows Server 2016 müssen Sie verwenden
Ich werde nicht näher auf den Prozess der Bereitstellung eines DSC-Pull-Servers eingehen, er ist sehr gut beschrieben
-
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).
-
Enable32BitAppOnWin64 = $true
Wenn Sie diese Änderung nicht vornehmen, können Sie den AppPool DSC-Server nicht auf IIS mit WSUS ausführen.
- 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
- Erstellen wir eine leere SQL-Datenbank mit dem Namen DSC.
- 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.
- Gehen Sie zum Abschnitt „Benutzerzuordnung“. Wählen Sie die Datenbank aus, in diesem Fall DSC. Wir vergeben die Rechte an den Datenbankeigentümer.
- Fertig.
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.
- Um Daten zu importieren, führen Sie den SQL Server-Import- und Export-Assistenten aus.
- Wir entscheiden, woher wir die Daten beziehen – in unserem Fall handelt es sich um eine Microsoft Access-Datenbank. Weiter klicken.
- Wählen Sie die Datei aus, aus der wir das Diagramm importieren.
- Wir geben an, wo importiert werden soll – bei uns handelt es sich um eine SQL-Datenbank.
- Wählen Sie den SQL-Server (Servername) und die Datenbank aus, in die wir Daten importieren möchten (DataBase).
- Wählen Sie die Option Daten aus einer oder mehreren Tabellen oder Ansichten kopieren (Daten aus Tabellen oder Ansichten kopieren).
- Wir wählen die Tabellen aus, aus denen wir das Datenbankschema importieren.
- Aktivieren Sie das Kontrollkästchen „Sofort ausführen“ und klicken Sie auf „Fertig stellen“.
- Fertig.
- Als Ergebnis sollten Tabellen in der DSC-Datenbank erscheinen.
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:
- Ö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).
- Wir geben an, dass wir eine Verbindung zum SQL-Server herstellen. Klicken Sie auf Fertig stellen.
- 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.
- Wir weisen darauf hin, dass wir für die Verbindung zum SQL-Server ein zuvor erstelltes Login mit dem Namen DSC verwenden.
- Die Datenbank legen wir in den DSC-Verbindungseinstellungen fest.
- Klicken Sie auf Fertig stellen.
- Bevor wir die Einrichtung abschließen, prüfen wir, ob die Verbindung funktioniert (Datenquelle testen).
- Fertig.
Erstellen einer devices.mdb-Datenbank in MS Access. Starten Sie MS Access und erstellen Sie eine leere Datenbank mit dem Namen devices.mdb.
- 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.
- 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.
- 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.
- In den Indizes müssen Sie Folgendes auswählen:
– TargetName für die dbo_Devices-Tabelle;
– NodeName oder IPAddress für dbo_RegistrationData;
– NodeName oder IPAddress für dbo_StatusReport. - Benennen wir die Tabellen in MS Access um, nämlich: Entfernen Sie das dbo_-Präfix, damit DSC sie verwenden kann.
- Fertig.
- 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
- 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.
- 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
- Überprüfen wir, ob der DSC-Server über einen Webbrowser zugänglich ist.
- Ü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.
- Öffnen Sie C:ProgrammeWindowsPowerShellModulesxPSDesiredStateConfiguration<Modulversion>DSCPulllServerSetupPullServerDeploymentVerificationTest (im Beispiel Version 8.0.0.0.0).
- Ö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.
- Führen Sie pullserversetuptests.ps1 aus
Invoke-Pester.PullServerSetupTests.ps1
Все работает. - 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.
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