PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

PowerShell Desired State Configuration (DSC) vereenvoudigt de taak van het implementeren en configureren van het besturingssysteem, serverrollen en applicaties aanzienlijk wanneer u over honderden servers beschikt.

Maar bij gebruik van DSC on-premises, d.w.z. niet in MS Azure, er zijn een paar nuances. Ze vallen vooral op als de organisatie groot is (vanaf 300 werkstations en servers) en de wereld van containers nog niet heeft ontdekt:

  • Er zijn geen volledige rapporten over de status van systemen. Als de vereiste configuratie op sommige servers niet is toegepast, zullen we daar zonder deze rapporten niets van weten. Het is vrij lastig om informatie te verkrijgen van de ingebouwde rapportageserver, en bij een groot aantal hosts kan het ook lang duren.
  • Ontbreekt aan schaalbaarheid en fouttolerantie. Het is onmogelijk om een ​​farm van DSC-pull-webservers te bouwen die één enkele fouttolerante database en een gemeenschappelijke opslag van mof-bestanden voor configuraties, modules en registratiesleutels zou hebben.

Vandaag zal ik u vertellen hoe u het eerste probleem kunt oplossen en gegevens kunt verkrijgen voor rapportage. Alles zou eenvoudiger zijn als SQL als database zou kunnen worden gebruikt. MEVR belooft ingebouwde ondersteuning alleen in Windows Server 2019 of in build Windows server 1803. Haal gegevens ook op met de OleDB-provider niet werkenomdat DSC Server een benoemde parameter gebruikt die niet volledig wordt ondersteund door OleDbCommand.

Ik heb deze methode gevonden: voor degenen die Windows Server 2012 en 2016 gebruiken, dat kan настроить met behulp van een SQL-database als backend voor de DSC-queryserver. Om dit te doen, zullen we een ‘proxy’ maken in de vorm van een .mdb-bestand met bijbehorende tabellen, die de gegevens die we ontvangen uit klantrapporten doorsturen naar de SQL-serverdatabase.

Let op: Voor Windows Server 2016 moet u gebruik maken van Toegang tot DatabaseEngine2016x86omdat Microsoft.Jet.OLEDB.4.0 niet langer wordt ondersteund.

Ik zal niet in detail treden over het proces van het inzetten van een DSC-pull-server; het is heel goed beschreven hier. Ik wil slechts een paar punten opmerken. Als we de DSC-puller op dezelfde webserver met WSUS of Kaspersky Security Center implementeren, moeten we in het script voor het maken van de configuratie de volgende parameters wijzigen:

  1. UseSecurityBestPractices     = $false

    Anders wordt TLS 1.0 uitgeschakeld en kunt u geen verbinding maken met de SQL-database. Kaspersky Security Center zal ook niet werken (het probleem zou opgelost moeten zijn in Kaspersky Security Center v11).

  2. Enable32BitAppOnWin64   = $true

    Als u deze wijziging niet doorvoert, kunt u de AppPool DSC-server niet uitvoeren op IIS met WSUS.

  3. Wanneer u DSC Server met WSUS installeert, schakelt u statische en dynamische caching uit voor de DSC-site.

Laten we verder gaan met het instellen van de DSC-server om de SQL-database te gebruiken.

Een SQL-database maken

  1. Laten we een lege SQL-database maken met de naam DSC.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  2. Laten we een account aanmaken om verbinding te maken met deze database. Controleer eerst of de SQL-server authenticatie van zowel Windows- als SQL-accounts toestaat.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  3. Ga naar het gedeelte Gebruikerstoewijzing. Selecteer de database, in dit geval DSC. Wij geven de rechten van de database-eigenaar.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  4. Klaar.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

Een schema maken voor de DSC-database

Er zijn twee manieren om een ​​schema voor een DSC-database te maken:

  • onafhankelijk, via een TSQL-script
    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
  • importeer gegevens uit lege devices.mdb als onderdeel van de PS-module PSDesiredStateConfiguration via de SQL Data Import Wizard.

    De Devices.mdb waarmee we gaan werken bevindt zich in C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.

  1. Als u gegevens wilt importeren, voert u de SQL Server-wizard importeren en exporteren uit.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  2. We kiezen waar we de gegevens vandaan halen - in ons geval is het een Microsoft Access-database. Klik volgende.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  3. Selecteer het bestand waaruit we het diagram importeren.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  4. Wij geven aan waar we moeten importeren; voor ons is het een SQL-database.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  5. Selecteer de SQL-server (Servernaam) en de database waarin we gegevens zullen importeren (DataBase).

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  6. Selecteer de optie Gegevens kopiëren uit een of meer tabellen of views (gegevens kopiëren uit tabellen of views).

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  7. We selecteren de tabellen waaruit we het databaseschema zullen importeren.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  8. Schakel het selectievakje Onmiddellijk uitvoeren in en klik op Voltooien.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  9. Klaar.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  10. Als gevolg hiervan zouden tabellen in de DSC-database moeten verschijnen.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

Een .mdb “proxy”-bestand instellen

Een ODBC-verbinding maken met een SQL-server. Er wordt aangenomen dat MS Access niet is geïnstalleerd op de server waarop DSC draait, dus het instellen van databases.mdb gebeurt op een tussenliggende host waarop MS Access is geïnstalleerd.

Laten we een systeem-ODBC-verbinding met de SQL-server maken (de verbindingsbitheid moet overeenkomen met de MS Access-bitheid - 64 of 32). Het kan worden gemaakt met behulp van:
- 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

— of handmatig, met behulp van de verbindingswizard:

  1. Open Beheertools. We selecteren ODBC-gegevensbronnen afhankelijk van de versie van geïnstalleerde MS Access. Ga naar het tabblad Systeem-DSN en maak een systeemverbinding (Toevoegen).

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  2. We geven aan dat we verbinding gaan maken met de SQL-server. Klik op Voltooien.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  3. Geef de naam en de server op waarmee u verbinding wilt maken. Vervolgens moet er een verbinding met dezelfde parameters worden gemaakt op de DSC-server.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  4. We geven aan dat we om verbinding te maken met de SQL-server een eerder aangemaakte login gebruiken met de naam DSC.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  5. We specificeren de database in de DSC-verbindingsinstellingen.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  6. Klik op Voltooien.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  7. Voordat we de installatie voltooien, controleren we of de verbinding werkt (Testgegevensbron).

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  8. Klaar.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

Een devices.mdb-database maken in MS Access. Start MS Access en maak een lege database met de naam devices.mdb.

PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  1. Ga naar het tabblad Externe gegevens en klik op ODBC-database. In het venster dat verschijnt, selecteert u Een gekoppelde tabel maken om verbinding te maken met de gegevensbron.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  2. Selecteer in het nieuwe venster het tabblad Machinegegevensbron en klik op OK. Voer in het nieuwe venster de inloggegevens in om verbinding te maken met de SQL-server.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  3. Selecteer de tabellen die moeten worden gekoppeld. Vink het vakje Wachtwoord opslaan aan en klik op OK. Bewaar het wachtwoord telkens voor alle drie de tabellen.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  4. In de indexen moet u het volgende selecteren:
    — TargetName voor de tabel dbo_Devices;

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

    — Knooppuntnaam of IP-adres voor dbo_RegistrationData;

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

    — Knooppuntnaam of IP-adres voor dbo_StatusReport.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  5. Laten we de tabellen in MS Access een andere naam geven, namelijk: verwijder het voorvoegsel dbo_ zodat DSC ze kan gebruiken.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  6. Klaar.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  7. Sla het bestand op en sluit MS Access. Nu kopiëren we de resulterende devices.mdb naar de DSC-server (standaard in C: Program FilesWindowsPowershellDSCService) en vervangen we de bestaande ermee (als deze bestaat).

DSC-server configureren om SQL te gebruiken

  1. We keren terug naar de DSC-server. Om verbinding te maken met de SQL-server met ons proxybestand, maken we een nieuwe ODBC-verbinding op de DSC-server. De naam, bitdiepte en verbindingsinstellingen moeten hetzelfde zijn als bij het maken van het MDB-bestand. U kunt vanaf hier de reeds geconfigureerde lege devices.mdb kopiëren.
  2. Om devices.mdb te gebruiken, moet u wijzigingen aanbrengen in web.config van de DSC-pullserver (standaard is dit C:inetpubPSDSCPullServerweb.config):

- voor 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;">

- voor 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;">

Hiermee is de installatie van de DSC-server voltooid.

Controle van de functionaliteit van de DSC-server

  1. Laten we controleren of de DSC-server toegankelijk is via een webbrowser.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  2. Laten we nu controleren of de DSC-pullserver correct werkt. Om dit te doen, bevat de xPSDesiredStateConfiguration-module het script pullserversetuptests.ps1. Voordat u dit script uitvoert, moet u een Powershell-module met de naam Pester installeren. Installeer het Install-Module -Naam Pester.
  3. Open C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<moduleversie>DSCPullServerSetupPullServerDeploymentVerificationTest (in de voorbeeldversie 8.0.0.0.0).

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  4. Open PullServerSetupTests.ps1 en controleer het pad naar web.config van de DSC-server. Het pad naar web.config, dat het script controleert, is rood gemarkeerd. Indien nodig veranderen we dit pad.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  5. Voer pullserversetuptests.ps1 uit
    Roep Pester.PullServerSetupTests.ps1 aan
    Все работает.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

  6. In SQL Management Studio zien we dat beheerde hosts rapporten naar de DSC-rapportageserver sturen en de gegevens in de DSC-database op de SQL-server terechtkomen.

    PowerShell Gewenste statusconfiguratie en bestand: deel 1. DSC Pull Server configureren om met een SQL-database te werken

Dat is alles. In de volgende artikelen wil ik u vertellen hoe u rapporten kunt maken over de verkregen gegevens, en zal ik ingaan op kwesties als fouttolerantie en schaalbaarheid.

Bron: www.habr.com

Voeg een reactie