PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

PowerShell Desired State Configuration (DSC) forenkler i stor grad jobben med å distribuere og konfigurere operativsystemet, serverrollene og applikasjonene når du har hundrevis av servere.

Men når du bruker DSC lokalt, dvs. ikke i MS Azure, det er et par nyanser. De er spesielt merkbare hvis organisasjonen er stor (fra 300 arbeidsstasjoner og servere) og ennå ikke har oppdaget containerverdenen:

  • Det finnes ingen fullstendige rapporter om status for systemene. Hvis den nødvendige konfigurasjonen ikke er brukt på noen servere, vil vi ikke vite om det uten disse rapportene. Det er ganske vanskelig å få tak i informasjon fra den innebygde rapporteringsserveren, og for et stort antall verter kan det også ta lang tid.
  • Mangler skalerbarhet og feiltoleranse. Det er umulig å bygge en farm med DSC pull-webservere som vil ha en enkelt feiltolerant database og en felles lagring av mof-filer for konfigurasjoner, moduler og registreringsnøkler.

I dag skal jeg fortelle deg hvordan du kan løse det første problemet og få data for rapportering. Alt ville vært enklere hvis SQL kunne brukes som en database. MS løfter innebygd støtte kun i Windows Server 2019 eller i build Windows Server 1803. Hent data ved hjelp av OleDB-leverandøren også vil ikke fungerefordi DSC Server bruker en navngitt parameter som ikke støttes fullt ut av OleDbCommand.

Jeg fant denne metoden: for de som bruker Windows Server 2012 og 2016, kan du sette opp bruke en SQL-database som en backend for DSC-spørringsserveren. For å gjøre dette vil vi opprette en "proxy" i form av en .mdb-fil med tilhørende tabeller, som vil omdirigere dataene som mottas fra klientrapporter til SQL-serverdatabasen.

Merk: For Windows Server 2016 må du bruke AccessDatabaseEngine2016x86fordi Microsoft.Jet.OLEDB.4.0 ikke lenger støttes.

Jeg vil ikke gå i detalj om prosessen med å distribuere en DSC pull-server, den er veldig godt beskrevet her. Jeg vil bare merke meg et par punkter. Hvis vi distribuerer DSC-trekkeren på den samme webserveren med WSUS eller Kaspersky Security Center, må vi endre følgende parametere i konfigurasjonsopprettingsskriptet:

  1. UseSecurityBestPractices     = $false

    Ellers vil TLS 1.0 bli deaktivert og du vil ikke kunne koble til SQL-databasen. Kaspersky Security Center vil heller ikke fungere (problemet bør være løst i Kaspersky Security Center v11).

  2. Enable32BitAppOnWin64   = $true

    Hvis du ikke gjør denne endringen, vil du ikke kunne kjøre AppPool DSC-serveren på IIS med WSUS.

  3. Når du installerer DSC Server med WSUS, deaktiver statisk og dynamisk caching for DSC-nettstedet.

La oss gå videre til å sette opp DSC-serveren til å bruke SQL-databasen.

Opprette en SQL-database

  1. La oss lage en tom SQL-database kalt DSC.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  2. La oss opprette en konto for å koble til denne databasen. Kontroller først at SQL-serveren tillater autentisering av både Windows- og SQL-kontoer.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  3. Gå til Brukerkartlegging-delen. Velg databasen, i dette tilfellet DSC. Vi gir databaseeierens rettigheter.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  4. Ferdig.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

Opprette et skjema for DSC-databasen

Det er to måter å lage et skjema for en DSC-database på:

  • uavhengig, gjennom et 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
  • importere data fra tomme enheter.mdb som en del av PS-modulen PSDesiredStateConfiguration gjennom SQL Data Import Wizard.

    Devices.mdb vi skal jobbe med er plassert i C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.

  1. For å importere data, kjør SQL Server Import and Export Wizard.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  2. Vi velger hvor vi skal hente dataene fra – i vårt tilfelle er det en Microsoft Access-database. Klikk Neste.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  3. Velg filen som vi importerer diagrammet fra.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  4. Vi angir hvor vi skal importere - for oss er det en SQL-database.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  5. Velg SQL-serveren (Server Name) og databasen som vi skal importere data til (DataBase).

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  6. Velg alternativet Kopier data fra en eller flere tabeller eller visninger (kopierer data fra tabeller eller visninger).

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  7. Vi velger tabellene som vi skal importere databaseskjemaet fra.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  8. Merk av for Kjør umiddelbart og klikk på Fullfør.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  9. Ferdig.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  10. Som et resultat bør tabeller vises i DSC-databasen.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

Sette opp en .mdb-proxy-fil

Opprette en ODBC-tilkobling til en SQL-server. Det antas at MS Access ikke er installert på serveren som kjører DSC, så oppsett av databases.mdb gjøres på en mellomvert med MS Access installert.

La oss lage en system-ODBC-tilkobling til SQL-serveren (tilkoblingsbitheten må samsvare med MS Access-bitheten - 64 eller 32). Den kan lages ved å bruke:
- 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 å bruke tilkoblingsveiviseren:

  1. Åpne Administrative verktøy. Vi velger ODBC-datakilder avhengig av versjonen av installert MS Access. Gå til System DSN-fanen og opprett en systemtilkobling (Legg til).

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  2. Vi indikerer at vi vil koble til SQL-serveren. Klikk Fullfør.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  3. Angi navnet og serveren du vil koble til. Da må det opprettes en forbindelse med de samme parameterne på DSC-serveren.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  4. Vi indikerer at for å koble til SQL-serveren bruker vi en tidligere opprettet pålogging med navnet DSC.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  5. Vi spesifiserer databasen i DSC-tilkoblingsinnstillingene.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  6. Klikk Fullfør.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  7. Før vi fullfører oppsettet, kontrollerer vi at tilkoblingen fungerer (Test datakilde).

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  8. Ferdig.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

Opprette en devices.mdb-database i MS Access. Start MS Access og lag en tom database kalt devices.mdb.

PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  1. Gå til fanen Eksterne data og klikk på ODBC-database. I vinduet som vises, velg Opprett en koblet tabell for å koble til datakilden.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  2. I det nye vinduet velger du kategorien Maskindatakilde og klikker OK. I det nye vinduet skriver du inn legitimasjonen for å koble til SQL-serveren.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  3. Velg tabellene som skal kobles sammen. Merk av for Lagre passord og klikk OK. Lagre passordet hver gang for alle tre bordene.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  4. I indeksene må du velge følgende:
    — TargetName for tabellen dbo_Devices;

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

    — Nodenavn eller IP-adresse for dbo_RegistrationData;

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

    — Nodenavn eller IP-adresse for dbo_StatusReport.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  5. La oss gi nytt navn til tabellene i MS Access, nemlig: fjern dbo_-prefikset slik at DSC kan bruke dem.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  6. Ferdig.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  7. Lagre filen og lukk MS Access. Nå kopierer vi de resulterende devices.mdb til DSC-serveren (som standard i C: Program FilesWindowsPowershellDSCService) og erstatter den eksisterende med den (hvis den eksisterer).

Konfigurere DSC-serveren til å bruke SQL

  1. Vi går tilbake til DSC-serveren. For å koble til SQL-serveren med proxy-filen vår, la oss opprette en ny ODBC-tilkobling på DSC-serveren. Navnet, bitdybden og tilkoblingsinnstillingene må være de samme som når du oppretter MDB-filen. Du kan kopiere den allerede konfigurerte tomme devices.mdb herfra.
  2. For å bruke devices.mdb, må du gjøre endringer i web.config til DSC pull-serveren (standard er C:inetpubPSDSCPullServerweb.config):

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

- for 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 fullfører DSC-serveroppsettet.

Kontrollerer funksjonaliteten til DSC-serveren

  1. La oss sjekke at DSC-serveren er tilgjengelig via en nettleser.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  2. La oss nå sjekke om DSC pull-serveren fungerer som den skal. For å gjøre dette inkluderer xPSDesiredStateConfiguration-modulen pullserversetuptests.ps1-skriptet. Før du kjører dette skriptet, må du installere en Powershell-modul kalt Pester. Installer den Installer-Module -Navn Pester.
  3. Åpne C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<modulversjon>DSCPullServerSetupPullServerDeploymentVerificationTest (i eksempelversjon 8.0.0.0.0).

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  4. Åpne PullServerSetupTests.ps1 og sjekk banen til web.config til DSC-serveren. Banen til web.config, som vil sjekke skriptet, er uthevet i rødt. Om nødvendig endrer vi denne veien.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  5. Kjør pullserversetuptests.ps1
    Invoke-Pester.PullServerSetupTests.ps1
    Alt fungerer.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

  6. I SQL Management Studio ser vi at administrerte verter sender rapporter til DSC-rapporteringsserveren og dataene havner i DSC-databasen på SQL-serveren.

    PowerShell Ønsket tilstandskonfigurasjon og fil: del 1. Konfigurere DSC Pull Server til å fungere med en SQL-database

Det er alt. I de følgende artiklene planlegger jeg å fortelle deg hvordan du bygger rapporter på dataene som er innhentet, og jeg vil berøre spørsmål om feiltoleranse og skalerbarhet.

Kilde: www.habr.com

Legg til en kommentar