PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

PowerShell Desired State Configuration (DSC) vereenvoudigt het implementeren en configureren van besturingssystemen, serverrollen en applicaties aanzienlijk, vooral wanneer u honderden servers heeft.

Maar bij het gebruik van DSC on-premises, dat wil zeggen niet in MS Azure, ontstaan er een paar aandachtspunten. Deze zijn vooral voelbaar als de organisatie groot is (meer dan 300 werkstations en servers) en men de wereld van containers nog niet heeft geopend:

  • Er zijn geen volledige rapportages over de systeemstatussen. Als de nodige configuratie niet op bepaalde servers is toegepast, komen we daar zonder deze rapporten niet achter. Het verkrijgen van informatie van de ingebouwde rapportageserver is vrij moeilijk, en voor een groot aantal hosts duurt het ook nog eens lang.
  • Er is geen schaalbaarheid en fouttolerantie. Het is niet mogelijk om een farm van DSC-vraagservers op te bouwen die een gezamenlijke fouttolerante database en een gemeenschappelijke opslag voor mof-configuratiebestanden, modules en registratiesleutels hebben.

Vandaag zal ik uitleggen hoe we het eerste probleem kunnen oplossen en gegevens kunnen verkrijgen voor het opstellen van rapportages. Het zou veel eenvoudiger zijn als we SQL als database konden gebruiken. MS belooft ondersteuning alleen in Windows Server 2019 of in de build van Windows Server 1803. Gegevens ophalen met behulp van de OleDB-provider is ook niet mogelijk, aangezien de DSC-server een benoemde parameter gebruikt die niet volledig wordt ondersteund door OleDbCommand.

Ik heb een methode gevonden: voor degenen die Windows Server 2012 en 2016 gebruiken, kan men configureren de SQL-database gebruiken als backend voor de DSC-vraagserver. Hiervoor creëren we een 'proxy' in de vorm van een .mdb-bestand met gekoppelde tabellen, dat gegevens van klantrapporten doorstuurd naar de SQL-server.

Opmerking: voor Windows Server 2016 moet men AccessDatabaseEngine2016x86, omdat Microsoft.Jet.OLEDB.4.0 niet langer wordt ondersteund.

Ik zal niet diep ingaan op het proces van het implementeren van de DSC-vraagserver, aangezien dit zeer goed is beschreven here. Ik zal slechts een paar punten benadrukken. Als we de DSC-vraagserver op dezelfde webserver met WSUS of Kaspersky Security Center implementeren, moeten we de volgende parameters in het configuratiescript 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 moet worden opgelost in Kaspersky Security Center v11).

  2. Enable32BitAppOnWin64 = $true

    Als deze wijziging niet wordt aangebracht, kan de AppPool van de DSC-server op IIS met WSUS niet worden gestart.

  3. Bij de installatie van de DSC-server samen met WSUS, schakelt u zowel de statische als dynamische caching voor de DSC-site uit.

Laten we de DSC-server configureren voor gebruik met SQL-database.

SQL-database aanmaken

  1. We maken een lege SQL-database met de naam DSC aan.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  2. We creëren een account voor verbinding met deze database. Controleer eerst of de authenticatie van accounts op de SQL-server is ingeschakeld, zowel voor Windows als SQL.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  3. We gaan naar het gedeelte Gebruikerstoewijzing. We kiezen de database, in dit geval – DSC. We geven eigenaarstoegankelijkheid aan de database.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  4. Klaar.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

Een schema aanmaken voor de DSC-database

Het schema voor de DSC-database kan op twee manieren worden aangemaakt:

  • zelfstandig, 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
  • gegevens importeren uit een lege devices.mdb in het PS-module PSDesiredStateConfiguration via de SQL Import Wizard.

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

  1. Om gegevens te importeren starten we de SQL Server Import and Export Wizard.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  2. We kiezen waar we de gegevens vandaan halen – in ons geval is dat de Microsoft Access-database. We klikken op Volgende.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  3. We kiezen het bestand waarvan we het schema importeren.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  4. We geven aan waar we moeten importeren – dat is voor ons de SQL-database.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  5. We selecteren de SQL-server (Servernaam) en de database waarin we gegevens willen importeren (DataBase).

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  6. Kies de optie Gegevens kopiëren van een of meer tabellen of weergaven.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  7. We selecteren de tabellen waarvan we het database-schema gaan importeren.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  8. Zet het vinkje bij Direct uitvoeren aan en klik op Voltooien.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  9. Klaar.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  10. Als resultaat moeten de tabellen in de DSC-database verschijnen.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

Configuratie van .mdb 'proxy'-bestand

ODBC-verbinding maken met de SQL-server. Het wordt verondersteld dat MS Access niet op de server met DSC is geïnstalleerd, daarom wordt de configuratie van databases.mdb uitgevoerd op een tussenliggende host met geïnstalleerde MS Access.

We zullen een systeem ODBC-verbinding maken met de SQL-server (de bitstructuur van de verbinding moet overeenkomen met de bitstructuur van MS Access – 64 of 32). Dit kan worden gedaan met:
— PowerShell-cmdlet:

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

— of handmatig, met behulp van de wizard voor verbindingen:

  1. Open de beheertools. Kies ODBC-datasouces afhankelijk van de versie van de geïnstalleerde MS Access. Ga naar het tabblad Systeem DSN en maak een systeembreed verbinding (Toevoegen).

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  2. Geef aan dat we verbinding maken met de SQL-server. Klik op Voltooien.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  3. Geef de naam en server voor de verbinding op. Daarna moet dezelfde verbinding met dezelfde parameters op de DSC-server worden aangemaakt.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  4. Geef aan dat we een eerder aangemaakt login met de naam DSC gebruiken voor de verbinding met de SQL-server.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  5. Geef de database op in de DSC-verbindingseinstellungen,

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  6. Klik op Voltooien.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  7. Controleer voor het afsluiten van de configuratie of de verbinding werkt (Test Data Source).

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  8. Klaar.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

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

PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  1. Ga naar het tabblad Externe gegevens, klik op ODBC-database. In het verschenen venster kiezen we voor Een gekoppelde tabel maken om verbinding te maken met de datasource.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  2. Kies in het nieuwe venster het tabblad Machine Data Source en klik op OK. Voer in het nieuwe venster de inloggegevens in voor de verbinding met de SQL-server.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  3. Selecteer de tabellen die moeten worden gekoppeld. Vink het vakje Wachtwoord opslaan aan en klik op OK. Het wachtwoord moet elke keer voor alle drie de tabellen worden opgeslagen.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  4. In de indexen moeten de volgende worden gekozen:
    — TargetName voor de tabel dbo_Devices;

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

    — NodeName of IPAddress voor dbo_RegistrationData;

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

    — NodeName of IPAddress voor dbo_StatusReport.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  5. Hernoem de tabellen in MS Access, namelijk: verwijder het voorvoegsel dbo_, zodat DSC ze kan gebruiken.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  6. Klaar.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  7. Sla het bestand op en sluit MS Access. Kopieer nu de verkregen devices.mdb naar de DSC-server (standaard in C:Program FilesWindowsPowershellDSCService) en vervang het bestaande bestand (indien aanwezig).

Configuratie van de DSC-server voor gebruik met SQL.

  1. Laten we terugkeren naar de DSC-server. Om verbinding te maken met de SQL-server met ons proxy-bestand, creëren we een nieuwe ODBC-verbinding op de DSC-server. De naam, bitdiepte en verbindingsinstellingen moeten hetzelfde zijn als die bij het aanmaken van het MDB-bestand. We kunnen een al geconfigureerde lege devices.mdb hiervandaan kopiëren.
  2. Om devices.mdb te gebruiken, moeten we wijzigingen aanbrengen in de web.config van de DSC-pullserver (standaard – C:inetpubPSDSCPullServerweb.config):

— voor Windows Server 2012

— voor Windows Server 2016

Met deze instellingen is de configuratie 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 Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  2. Nu gaan we testen of de DSC-pullserver correct werkt. In de module xPSDesiredStateConfiguration is er een script pullserversetuptests.ps1. Voordat we dit script uitvoeren, moet de PowerShell-module Pester worden geïnstalleerd. We installeren het met Install-Module -Name Pester.
  3. Open C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfigurationDSCPullServerSetupPullServerDeploymentVerificationTest (bijvoorbeeld versie 8.0.0.0.0).

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  4. Open PullServerSetupTests.ps1 en controleer het pad naar de web.config van de DSC-server. Het pad naar de web.config dat door het script zal worden gecontroleerd is rood gemarkeerd. Wijzig dit pad indien nodig.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

  5. Voer pullserversetuptests.ps1 uit
    Invoke-Pester .PullServerSetupTests.ps1
    Alles werkt.

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

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

    PowerShell Desired State Configuration en filemaker: deel 1. Configureren van DSC Pull Server voor gebruik met een SQL-database

Dat is alles. In de volgende artikelen ben ik van plan om te bespreken hoe rapporten te maken op basis van de verkregen gegevens en zal ik enkele vragen over failover en schaalbaarheid aansteken.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster