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
Jeg fandt denne metode: for dem, der bruger Windows Server 2012 og 2016, kan du
Bemærk: Til Windows Server 2016 skal du bruge
Jeg vil ikke gå i detaljer om processen med at implementere en DSC pull-server, den er meget godt beskrevet
-
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).
-
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.
- 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
- Lad os oprette en tom SQL-database ved navn DSC.
- 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.
- Gå til afsnittet Brugerkortlægning. Vælg databasen, i dette tilfælde DSC. Vi giver databaseejerens rettigheder.
- Udført.
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.
- For at importere data skal du køre guiden Import og eksport af SQL Server.
- Vi vælger, hvor vi vil hente dataene fra – i vores tilfælde er det en Microsoft Access-database. Klik på Næste.
- Vælg den fil, som vi importerer diagrammet fra.
- Vi angiver, hvor der skal importeres - for os er det en SQL-database.
- Vælg SQL-serveren (Servernavn) og den database, som vi vil importere data til (DataBase).
- Vælg indstillingen Kopier data fra en eller flere tabeller eller visninger (kopiering af data fra tabeller eller visninger).
- Vi vælger de tabeller, som vi vil importere databaseskemaet fra.
- Marker afkrydsningsfeltet Kør med det samme, og klik på Udfør.
- Udført.
- Som følge heraf bør tabeller vises i DSC-databasen.
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:
- Å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).
- Vi angiver, at vi vil oprette forbindelse til SQL-serveren. Klik på Udfør.
- Angiv navnet og den server, der skal oprettes forbindelse til. Derefter skal der oprettes en forbindelse med de samme parametre på DSC-serveren.
- Vi angiver, at for at oprette forbindelse til SQL-serveren, bruger vi et tidligere oprettet login med navnet DSC.
- Vi angiver databasen i DSC-forbindelsesindstillingerne.
- Klik på Udfør.
- Inden vi afslutter opsætningen, kontrollerer vi, at forbindelsen fungerer (Test datakilde).
- Udført.
Oprettelse af en devices.mdb-database i MS Access. Start MS Access og opret en tom database kaldet devices.mdb.
- 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.
- 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.
- Vælg de tabeller, der skal linkes. Marker afkrydsningsfeltet Gem adgangskode, og klik på OK. Gem adgangskoden hver gang for alle tre tabeller.
- I indekserne skal du vælge følgende:
— TargetName for tabellen dbo_Devices;
— NodeName eller IPAddress for dbo_RegistrationData;
— Nodenavn eller IP-adresse for dbo_StatusReport. - Lad os omdøbe tabellerne i MS Access, nemlig: fjern præfikset dbo_, så DSC kan bruge dem.
- Udført.
- 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
- 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.
- 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
- Lad os kontrollere, at DSC-serveren er tilgængelig via en webbrowser.
- 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.
- Åbn C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<modulversion>DSCPullServerSetupPullServerDeploymentVerificationTest (i eksemplet version 8.0.0.0.0).
- Å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.
- Kør pullserversetuptests.ps1
Invoke-Pester.PullServerSetupTests.ps1
Все работает. - I SQL Management Studio ser vi, at administrerede værter sender rapporter til DSC-rapporteringsserveren, og dataene ender i DSC-databasen på SQL-serveren.
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