PowerShell Desired State Configuration (DSC) vereenvoudigt de taak van het implementeren en configureren van het besturingssysteem, serverrollen en applicaties aanzienlijk wanneer u over honderden servers beschikt.
Maar bij gebruik van DSC on-premises, d.w.z. niet in MS Azure, er zijn een paar nuances. Ze vallen vooral op als de organisatie groot is (vanaf 300 werkstations en servers) en de wereld van containers nog niet heeft ontdekt:
- Er zijn geen volledige rapporten over de status van systemen. Als de vereiste configuratie op sommige servers niet is toegepast, zullen we daar zonder deze rapporten niets van weten. Het is vrij lastig om informatie te verkrijgen van de ingebouwde rapportageserver, en bij een groot aantal hosts kan het ook lang duren.
- Ontbreekt aan schaalbaarheid en fouttolerantie. Het is onmogelijk om een farm van DSC-pull-webservers te bouwen die één enkele fouttolerante database en een gemeenschappelijke opslag van mof-bestanden voor configuraties, modules en registratiesleutels zou hebben.
Vandaag zal ik u vertellen hoe u het eerste probleem kunt oplossen en gegevens kunt verkrijgen voor rapportage. Alles zou eenvoudiger zijn als SQL als database zou kunnen worden gebruikt. MEVR
Ik heb deze methode gevonden: voor degenen die Windows Server 2012 en 2016 gebruiken, dat kan
Let op: Voor Windows Server 2016 moet u gebruik maken van
Ik zal niet in detail treden over het proces van het inzetten van een DSC-pull-server; het is heel goed beschreven
-
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 zou opgelost moeten zijn in Kaspersky Security Center v11).
-
Enable32BitAppOnWin64 = $true
Als u deze wijziging niet doorvoert, kunt u de AppPool DSC-server niet uitvoeren op IIS met WSUS.
- Wanneer u DSC Server met WSUS installeert, schakelt u statische en dynamische caching uit voor de DSC-site.
Laten we verder gaan met het instellen van de DSC-server om de SQL-database te gebruiken.
Een SQL-database maken
- Laten we een lege SQL-database maken met de naam DSC.
- Laten we een account aanmaken om verbinding te maken met deze database. Controleer eerst of de SQL-server authenticatie van zowel Windows- als SQL-accounts toestaat.
- Ga naar het gedeelte Gebruikerstoewijzing. Selecteer de database, in dit geval DSC. Wij geven de rechten van de database-eigenaar.
- Klaar.
Een schema maken voor de DSC-database
Er zijn twee manieren om een schema voor een DSC-database te maken:
- onafhankelijk, 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
- importeer gegevens uit lege devices.mdb als onderdeel van de PS-module PSDesiredStateConfiguration via de SQL Data Import Wizard.
De Devices.mdb waarmee we gaan werken bevindt zich in C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.
- Als u gegevens wilt importeren, voert u de SQL Server-wizard importeren en exporteren uit.
- We kiezen waar we de gegevens vandaan halen - in ons geval is het een Microsoft Access-database. Klik volgende.
- Selecteer het bestand waaruit we het diagram importeren.
- Wij geven aan waar we moeten importeren; voor ons is het een SQL-database.
- Selecteer de SQL-server (Servernaam) en de database waarin we gegevens zullen importeren (DataBase).
- Selecteer de optie Gegevens kopiëren uit een of meer tabellen of views (gegevens kopiëren uit tabellen of views).
- We selecteren de tabellen waaruit we het databaseschema zullen importeren.
- Schakel het selectievakje Onmiddellijk uitvoeren in en klik op Voltooien.
- Klaar.
- Als gevolg hiervan zouden tabellen in de DSC-database moeten verschijnen.
Een .mdb “proxy”-bestand instellen
Een ODBC-verbinding maken met een SQL-server. Er wordt aangenomen dat MS Access niet is geïnstalleerd op de server waarop DSC draait, dus het instellen van databases.mdb gebeurt op een tussenliggende host waarop MS Access is geïnstalleerd.
Laten we een systeem-ODBC-verbinding met de SQL-server maken (de verbindingsbitheid moet overeenkomen met de MS Access-bitheid - 64 of 32). Het kan worden gemaakt met behulp van:
- 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
— of handmatig, met behulp van de verbindingswizard:
- Open Beheertools. We selecteren ODBC-gegevensbronnen afhankelijk van de versie van geïnstalleerde MS Access. Ga naar het tabblad Systeem-DSN en maak een systeemverbinding (Toevoegen).
- We geven aan dat we verbinding gaan maken met de SQL-server. Klik op Voltooien.
- Geef de naam en de server op waarmee u verbinding wilt maken. Vervolgens moet er een verbinding met dezelfde parameters worden gemaakt op de DSC-server.
- We geven aan dat we om verbinding te maken met de SQL-server een eerder aangemaakte login gebruiken met de naam DSC.
- We specificeren de database in de DSC-verbindingsinstellingen.
- Klik op Voltooien.
- Voordat we de installatie voltooien, controleren we of de verbinding werkt (Testgegevensbron).
- Klaar.
Een devices.mdb-database maken in MS Access. Start MS Access en maak een lege database met de naam devices.mdb.
- Ga naar het tabblad Externe gegevens en klik op ODBC-database. In het venster dat verschijnt, selecteert u Een gekoppelde tabel maken om verbinding te maken met de gegevensbron.
- Selecteer in het nieuwe venster het tabblad Machinegegevensbron en klik op OK. Voer in het nieuwe venster de inloggegevens in om verbinding te maken met de SQL-server.
- Selecteer de tabellen die moeten worden gekoppeld. Vink het vakje Wachtwoord opslaan aan en klik op OK. Bewaar het wachtwoord telkens voor alle drie de tabellen.
- In de indexen moet u het volgende selecteren:
— TargetName voor de tabel dbo_Devices;
— Knooppuntnaam of IP-adres voor dbo_RegistrationData;
— Knooppuntnaam of IP-adres voor dbo_StatusReport. - Laten we de tabellen in MS Access een andere naam geven, namelijk: verwijder het voorvoegsel dbo_ zodat DSC ze kan gebruiken.
- Klaar.
- Sla het bestand op en sluit MS Access. Nu kopiëren we de resulterende devices.mdb naar de DSC-server (standaard in C: Program FilesWindowsPowershellDSCService) en vervangen we de bestaande ermee (als deze bestaat).
DSC-server configureren om SQL te gebruiken
- We keren terug naar de DSC-server. Om verbinding te maken met de SQL-server met ons proxybestand, maken we een nieuwe ODBC-verbinding op de DSC-server. De naam, bitdiepte en verbindingsinstellingen moeten hetzelfde zijn als bij het maken van het MDB-bestand. U kunt vanaf hier de reeds geconfigureerde lege devices.mdb kopiëren.
- Om devices.mdb te gebruiken, moet u wijzigingen aanbrengen in web.config van de DSC-pullserver (standaard is dit C:inetpubPSDSCPullServerweb.config):
- voor 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;">
- voor 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;">
Hiermee is de installatie van de DSC-server voltooid.
Controle van de functionaliteit van de DSC-server
- Laten we controleren of de DSC-server toegankelijk is via een webbrowser.
- Laten we nu controleren of de DSC-pullserver correct werkt. Om dit te doen, bevat de xPSDesiredStateConfiguration-module het script pullserversetuptests.ps1. Voordat u dit script uitvoert, moet u een Powershell-module met de naam Pester installeren. Installeer het Install-Module -Naam Pester.
- Open C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<moduleversie>DSCPullServerSetupPullServerDeploymentVerificationTest (in de voorbeeldversie 8.0.0.0.0).
- Open PullServerSetupTests.ps1 en controleer het pad naar web.config van de DSC-server. Het pad naar web.config, dat het script controleert, is rood gemarkeerd. Indien nodig veranderen we dit pad.
- Voer pullserversetuptests.ps1 uit
Roep Pester.PullServerSetupTests.ps1 aan
Все работает. - In SQL Management Studio zien we dat beheerde hosts rapporten naar de DSC-rapportageserver sturen en de gegevens in de DSC-database op de SQL-server terechtkomen.
Dat is alles. In de volgende artikelen wil ik u vertellen hoe u rapporten kunt maken over de verkregen gegevens, en zal ik ingaan op kwesties als fouttolerantie en schaalbaarheid.
Bron: www.habr.com