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
Jeg fant denne metoden: for de som bruker Windows Server 2012 og 2016, kan du
Merk: For Windows Server 2016 må du bruke
Jeg vil ikke gå i detalj om prosessen med å distribuere en DSC pull-server, den er veldig godt beskrevet
-
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).
-
Enable32BitAppOnWin64 = $true
Hvis du ikke gjør denne endringen, vil du ikke kunne kjøre AppPool DSC-serveren på IIS med WSUS.
- 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
- La oss lage en tom SQL-database kalt DSC.
- 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.
- Gå til Brukerkartlegging-delen. Velg databasen, i dette tilfellet DSC. Vi gir databaseeierens rettigheter.
- Ferdig.
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.
- For å importere data, kjør SQL Server Import and Export Wizard.
- Vi velger hvor vi skal hente dataene fra – i vårt tilfelle er det en Microsoft Access-database. Klikk Neste.
- Velg filen som vi importerer diagrammet fra.
- Vi angir hvor vi skal importere - for oss er det en SQL-database.
- Velg SQL-serveren (Server Name) og databasen som vi skal importere data til (DataBase).
- Velg alternativet Kopier data fra en eller flere tabeller eller visninger (kopierer data fra tabeller eller visninger).
- Vi velger tabellene som vi skal importere databaseskjemaet fra.
- Merk av for Kjør umiddelbart og klikk på Fullfør.
- Ferdig.
- Som et resultat bør tabeller vises i DSC-databasen.
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:
- Å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).
- Vi indikerer at vi vil koble til SQL-serveren. Klikk Fullfør.
- Angi navnet og serveren du vil koble til. Da må det opprettes en forbindelse med de samme parameterne på DSC-serveren.
- Vi indikerer at for å koble til SQL-serveren bruker vi en tidligere opprettet pålogging med navnet DSC.
- Vi spesifiserer databasen i DSC-tilkoblingsinnstillingene.
- Klikk Fullfør.
- Før vi fullfører oppsettet, kontrollerer vi at tilkoblingen fungerer (Test datakilde).
- Ferdig.
Opprette en devices.mdb-database i MS Access. Start MS Access og lag en tom database kalt devices.mdb.
- Gå til fanen Eksterne data og klikk på ODBC-database. I vinduet som vises, velg Opprett en koblet tabell for å koble til datakilden.
- I det nye vinduet velger du kategorien Maskindatakilde og klikker OK. I det nye vinduet skriver du inn legitimasjonen for å koble til SQL-serveren.
- Velg tabellene som skal kobles sammen. Merk av for Lagre passord og klikk OK. Lagre passordet hver gang for alle tre bordene.
- I indeksene må du velge følgende:
— TargetName for tabellen dbo_Devices;
— Nodenavn eller IP-adresse for dbo_RegistrationData;
— Nodenavn eller IP-adresse for dbo_StatusReport. - La oss gi nytt navn til tabellene i MS Access, nemlig: fjern dbo_-prefikset slik at DSC kan bruke dem.
- Ferdig.
- 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
- 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.
- 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
- La oss sjekke at DSC-serveren er tilgjengelig via en nettleser.
- 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.
- Åpne C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<modulversjon>DSCPullServerSetupPullServerDeploymentVerificationTest (i eksempelversjon 8.0.0.0.0).
- Å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.
- Kjør pullserversetuptests.ps1
Invoke-Pester.PullServerSetupTests.ps1
Alt fungerer. - I SQL Management Studio ser vi at administrerte verter sender rapporter til DSC-rapporteringsserveren og dataene havner i DSC-databasen på SQL-serveren.
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