PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

PowerShell Desired State Configuration (DSC) forenkler i høj grad arbejdet med at implementere og konfigurere operativsystemet, serverroller og applikationer, når du har hundredvis af servere.

Men ved brug af DSC on-premises, dvs. ikke i MS Azure, der er et par nuancer. De er især bemærkelsesværdige, hvis organisationen er stor (fra 300 arbejdsstationer og servere) og endnu ikke har opdaget containerverdenen:

  • Der er ingen fuldstændige rapporter om status for systemerne. Hvis den nødvendige konfiguration ikke er blevet anvendt på nogle servere, vil vi ikke vide om det uden disse rapporter. Det er ret svært at få information fra den indbyggede rapporteringsserver, og for et stort antal værter kan det også tage lang tid.
  • Mangler skalerbarhed og fejltolerance. Det er umuligt at bygge en farm af DSC pull-webservere, der ville have en enkelt fejltolerant database og en fælles lagring af mof-filer til konfigurationer, moduler og registreringsnøgler.

I dag vil jeg fortælle dig, hvordan du kan løse det første problem og få data til rapportering. Alt ville være lettere, hvis SQL kunne bruges som en database. FRK løfter indbygget understøttelse kun i Windows Server 2019 eller i build Windows-server 1803. Hent data også ved hjælp af OleDB-udbyderen vil ikke virkefordi DSC Server bruger en navngivet parameter, der ikke er fuldt understøttet af OleDbCommand.

Jeg fandt denne metode: for dem, der bruger Windows Server 2012 og 2016, kan du oprettet ved at bruge en SQL-database som backend til DSC-forespørgselsserveren. For at gøre dette, vil vi oprette en "proxy" i form af en .mdb-fil med tilhørende tabeller, som vil omdirigere data modtaget fra klientrapporter til SQL-serverdatabasen.

Bemærk: Til Windows Server 2016 skal du bruge AccessDatabaseEngine2016x86fordi Microsoft.Jet.OLEDB.4.0 ikke længere understøttes.

Jeg vil ikke gå i detaljer om processen med at implementere en DSC pull-server, den er meget godt beskrevet her. Jeg vil blot bemærke et par punkter. Hvis vi implementerer DSC-udtrækkeren på den samme webserver med WSUS eller Kaspersky Security Center, skal vi i konfigurations-oprettelsesscriptet ændre følgende parametre:

  1. UseSecurityBestPractices     = $false

    Ellers vil TLS 1.0 blive deaktiveret, og du vil ikke være i stand til at oprette forbindelse til SQL-databasen. Kaspersky Security Center vil heller ikke fungere (problemet burde være løst i Kaspersky Security Center v11).

  2. Enable32BitAppOnWin64   = $true

    Hvis du ikke foretager denne ændring, vil du ikke være i stand til at køre AppPool DSC-serveren på IIS med WSUS.

  3. Når du installerer DSC Server med WSUS, skal du deaktivere statisk og dynamisk cachelagring for DSC-stedet.

Lad os gå videre til at konfigurere DSC-serveren til at bruge SQL-databasen.

Oprettelse af en SQL-database

  1. Lad os oprette en tom SQL-database ved navn DSC.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  2. Lad os oprette en konto for at oprette forbindelse til denne database. Først skal du kontrollere, at SQL-serveren tillader godkendelse af både Windows- og SQL-konti.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  3. Gå til afsnittet Brugerkortlægning. Vælg databasen, i dette tilfælde DSC. Vi giver databaseejerens rettigheder.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  4. Udført.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

Oprettelse af et skema til DSC-databasen

Der er to måder at oprette et skema til en DSC-database på:

  • uafhængigt gennem et 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
  • importere data fra tomme devices.mdb som en del af PS-modulet PSDesiredStateConfiguration gennem SQL Data Import Wizard.

    Den Devices.mdb, vi skal arbejde med, er placeret i C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.

  1. For at importere data skal du køre guiden Import og eksport af SQL Server.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  2. Vi vælger, hvor vi vil hente dataene fra – i vores tilfælde er det en Microsoft Access-database. Klik på Næste.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  3. Vælg den fil, som vi importerer diagrammet fra.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  4. Vi angiver, hvor der skal importeres - for os er det en SQL-database.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  5. Vælg SQL-serveren (Servernavn) og den database, som vi vil importere data til (DataBase).

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  6. Vælg indstillingen Kopier data fra en eller flere tabeller eller visninger (kopiering af data fra tabeller eller visninger).

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  7. Vi vælger de tabeller, som vi vil importere databaseskemaet fra.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  8. Marker afkrydsningsfeltet Kør med det samme, og klik på Udfør.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  9. Udført.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  10. Som følge heraf bør tabeller vises i DSC-databasen.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

Opsætning af en .mdb "proxy" fil

Oprettelse af en ODBC-forbindelse til en SQL-server. Det antages, at MS Access ikke er installeret på serveren, der kører DSC, så opsætning af databases.mdb sker på en mellemvært med MS Access installeret.

Lad os oprette en system-ODBC-forbindelse til SQL-serveren (forbindelsens bithed skal svare til MS Access-bitheden - 64 eller 32). Det kan oprettes ved hjælp af:
- 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

— eller manuelt ved hjælp af forbindelsesguiden:

  1. Åbn Administrative værktøjer. Vi vælger ODBC-datakilder afhængigt af versionen af ​​installeret MS Access. Gå til fanen System DSN og opret en systemforbindelse (Tilføj).

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  2. Vi angiver, at vi vil oprette forbindelse til SQL-serveren. Klik på Udfør.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  3. Angiv navnet og den server, der skal oprettes forbindelse til. Derefter skal der oprettes en forbindelse med de samme parametre på DSC-serveren.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  4. Vi angiver, at for at oprette forbindelse til SQL-serveren, bruger vi et tidligere oprettet login med navnet DSC.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  5. Vi angiver databasen i DSC-forbindelsesindstillingerne.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  6. Klik på Udfør.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  7. Inden vi afslutter opsætningen, kontrollerer vi, at forbindelsen fungerer (Test datakilde).

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  8. Udført.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

Oprettelse af en devices.mdb-database i MS Access. Start MS Access og opret en tom database kaldet devices.mdb.

PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  1. Gå til fanen Eksterne data, og klik på ODBC-database. I det vindue, der vises, skal du vælge Opret en sammenkædet tabel for at oprette forbindelse til datakilden.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  2. I det nye vindue skal du vælge fanen Maskindatakilde og klikke på OK. I det nye vindue skal du indtaste legitimationsoplysningerne for at oprette forbindelse til SQL-serveren.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  3. Vælg de tabeller, der skal linkes. Marker afkrydsningsfeltet Gem adgangskode, og klik på OK. Gem adgangskoden hver gang for alle tre tabeller.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  4. I indekserne skal du vælge følgende:
    — TargetName for tabellen dbo_Devices;

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

    — NodeName eller IPAddress for dbo_RegistrationData;

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

    — Nodenavn eller IP-adresse for dbo_StatusReport.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  5. Lad os omdøbe tabellerne i MS Access, nemlig: fjern præfikset dbo_, så DSC kan bruge dem.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  6. Udført.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  7. Gem filen og luk MS Access. Nu kopierer vi den resulterende devices.mdb til DSC-serveren (som standard i C: Program FilesWindowsPowershellDSCService) og erstatter den eksisterende med den (hvis den findes).

Konfiguration af DSC-server til at bruge SQL

  1. Vi vender tilbage til DSC-serveren. For at oprette forbindelse til SQL-serveren med vores proxy-fil, lad os oprette en ny ODBC-forbindelse på DSC-serveren. Navnet, bitdybden og forbindelsesindstillingerne skal være de samme som ved oprettelse af MDB-filen. Du kan kopiere den allerede konfigurerede tomme devices.mdb herfra.
  2. For at bruge devices.mdb skal du foretage ændringer i web.config på DSC pull-serveren (standard er C:inetpubPSDSCPullServerweb.config):

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

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

Dette fuldender DSC-serveropsætningen.

Kontrol af DSC-serverens funktionalitet

  1. Lad os kontrollere, at DSC-serveren er tilgængelig via en webbrowser.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  2. Lad os nu tjekke, om DSC pull-serveren fungerer korrekt. For at gøre dette inkluderer xPSDesiredStateConfiguration-modulet pullserversetuptests.ps1-scriptet. Før du kører dette script, skal du installere et Powershell-modul ved navn Pester. Installer det Installer-Modul -Navn Pester.
  3. Åbn C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<modulversion>DSCPullServerSetupPullServerDeploymentVerificationTest (i eksemplet version 8.0.0.0.0).

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  4. Åbn PullServerSetupTests.ps1 og kontroller stien til web.config på DSC-serveren. Stien til web.config, som kontrollerer scriptet, er fremhævet med rødt. Om nødvendigt ændrer vi denne vej.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  5. Kør pullserversetuptests.ps1
    Invoke-Pester.PullServerSetupTests.ps1
    Все работает.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

  6. I SQL Management Studio ser vi, at administrerede værter sender rapporter til DSC-rapporteringsserveren, og dataene ender i DSC-databasen på SQL-serveren.

    PowerShell Ønsket tilstandskonfiguration og fil: del 1. Konfiguration af DSC Pull Server til at arbejde med en SQL-database

Det er alt. I de følgende artikler planlægger jeg at fortælle dig, hvordan du opbygger rapporter om de opnåede data, og jeg vil komme ind på spørgsmål om fejltolerance og skalerbarhed.

Kilde: www.habr.com

Tilføj en kommentar