
PowerShell Desired State Configuration (DSC) veľmi zjednodušuje proces nasadzovania a konfigurácie operačného systému, serverových rolí a aplikácií, keď máte stovky serverov.
Ale pri používaní DSC on-premises, t.j. nie v MS Azure, sa objavuje niekoľko nuáns. Tieto sú obzvlášť pociťované, ak je organizácia veľká (od 300 pracovných staníc a serverov) a ešte neobjavila svet kontajnerov:
- Nie sú k dispozícii kompletné správy o stave systémov. Ak potrebná konfigurácia nebola aplikovaná na niektorých serveroch, bez týchto správ sa to nedozvieme. Získať informácie z integrovaného servera správ je pomerne ťažké a pre veľké množstvo hostiteľov – navyše aj pomalé.
- Chýba škálovateľnosť a odolnosť voči výpadkom. Nie je možné postaviť farmu serverov DSC, ktoré by mali spoločnú odolnú databázu a spoločné úložisko mof súborov konfiguračných nastavení, modulov a registračných kľúčov.
Dnes poviem, ako je možné vyriešiť prvý problém a získať údaje na vytvorenie reportingu. Všetko by bolo jednoduchšie, ak by sa ako databáza mohla použiť SQL. MS má zabudovanú podporu len vo Windows Server 2019 alebo v buildu Windows Server 1803. Získať údaje pomocou OleDB provider tiež , pretože server DSC používa pomenovaný parameter, ktorý nie je úplne podporovaný OleDbCommand.
Našiel som takýto spôsob: tým, ktorí používajú Windows Server 2012 a 2016, sa môže použitie databázy SQL ako backend’u pre opytujúci DSC server. Na to vytvoríme „proxy“ vo forme .mdb súboru so spojenými tabuľkami, ktorý bude presmerovávať údaje získané z reportov klientov do databázy SQL servera.
Poznámka: pre Windows Server 2016 je potrebné použiť , pretože Microsoft.Jet.OLEDB.4.0 už nie je podporovaný.
Nebudem sa podrobne zaoberať procesom nasadenia opytujúceho DSC servera, je to veľmi dobre popísané . Uskutočním len pár poznámok. Ak nasadzujeme opytujúci DSC na jednom webovom serveri so WSUS alebo Kaspersky Security Center, potom je potrebné v skripte na vytvorenie konfigurácie zmeniť nasledujúce parametre:
UseSecurityBestPractices = $falseInak bude TLS 1.0 vypnuté, nebudete sa môcť pripojiť k databáze SQL. Kaspersky Security Center nebude tiež fungovať (problém by mal byť vyriešený v Kaspersky Security Center v11).
Enable32BitAppOnWin64 = $trueAk toto zmenenie nezavedie, nebude možné spustiť AppPool DSC servera na IIS so WSUS.
- Pri inštalácii DSC servera spolu s WSUS vypnite statické a dynamické caching pre stránku DSC.
Prejdeme na nastavenie servera DSC pre použitie s databázou SQL.
Vytvorenie databázy SQL
- Vytvoríme prázdnu databázu SQL s názvom DSC.


- Vytvoríme účet na pripojenie k tejto databáze. Predtým skontrolujte, že na SQL serveri je povolená autentifikácia účtov ako Windows, tak aj SQL.


- Prejdeme do sekcie User Mapping. Vyberáme databázu, v tomto prípade – DSC. Dávame práva vlastníka databázy.

- Hotovo.

Vytvorenie schémy pre databázu DSC
Schému pre databázu DSC môžete vytvoriť dvoma spôsobmi:
- sami, pomocou skriptu na TSQL
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 - importovať dáta z prázdneho devices.mdb v rámci PS modulu PSDesiredStateConfiguration cez Prievodcu importom dát SQL.
Devices.mdb, s ktorým budeme pracovať, sa nachádza v C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.
- Na import dát spustíme SQL Server Import and Export Wizard.

- Vyberáme, odkiaľ budeme brať dáta – v našom prípade je to databáza Microsoft Access. Klikneme na Next.

- Vyberáme súbor, z ktorého importujeme schému.

- Uveďte, kam importovať, – v našom prípade je to databáza SQL.

- Vyberáme SQL server (Server Name) a databázu, do ktorej budeme importovať dáta (DataBase).

- Vyberieme voľbu Copy data from one or more tables or views (kopírovanie dát z tabuliek alebo zobrazení).

- Vyberáme tabuľky, z ktorých budeme importovať schému databázy.

- Zaškrtneme možnosť Run Immediately a stlačíme Finish.

- Hotovo.

- V dôsledku toho by v databáze DSC mali vzniknúť tabuľky.

Nastavenie .mdb „proxy“ súboru
Vytvorenie ODBC pripojenia k SQL serveru. Predpokladá sa, že MS Access nie je nainštalovaný na serveri s DSC, preto sa konfigurácia databases.mdb vykonáva na medzičinnom hoste s nainštalovaným MS Access.
Vytvoríme systémové ODBC pripojenie k SQL serveru (architektúra pripojenia musí zodpovedať architektúre MS Access – 64 alebo 32). Môžete ho vytvoriť pomocou:
— PowerShell cmdletu:
Add-OdbcDsn –Name DSC –DriverName 'SQL Server' –Platform '' –DsnType System –SetPropertyValue @('Description=DSC Pull Server',"Server=",'Trusted_Connection=yes','Database=DSC') –PassThru— alebo manuálne, pomocou sprievodcu pripojeniami:
- Otvoríme Administratívne nástroje. Vyberáme zdroje údajov ODBC v závislosti od verzie nainštalovaného MS Access. Prejdeme na kartu System DSN a vytvoríme systémové pripojenie (Pridať).

- Uvedieme, že sa chceme pripojiť k SQL serveru. Klikneme na Dokončiť.

- Uvedieme názov a server na pripojenie. Potom je potrebné vytvoriť pripojenie s rovnakými parametrami na serveri DSC.

- Uvedieme, že na pripojenie k SQL serveru používame predtým vytvorený účet s menom DSC.

- Uvedieme databázu v nastaveniach pripojenia DSC.

- Klikneme na Dokončiť.

- Pred dokončením nastavenia skontrolujeme, či pripojenie funguje (Test Data Source).

- Hotovo.

Vytvorenie databázy devices.mdb v MS Access. Spustíme MS Access a vytvoríme prázdnu databázu s názvom devices.mdb.

- Prejdeme na kartu Externé údaje, klikneme na ODBC databázu. V objavenom okne vyberáme Vytvoriť prepojenú tabuľku na prepojenie so zdrojom údajov.

- V novom okne vyberáme kartu Machine Data Source a klikneme na OK. V novom okne zadáme prihlasovacie údaje na pripojenie k SQL serveru.

- Vyberáme tabuľky, ktoré je potrebné prepojiť. Začiarkneme políčko Uložiť heslo a klikneme na OK. Heslo je potrebné uložiť každýkrát pre všetky tri tabuľky.

- V indexoch je potrebné vybrať nasledujúce:
— TargetName pre tabuľku dbo_Devices;
— NodeName alebo IPAddress pre dbo_RegistrationData;
— NodeName alebo IPAddress pre dbo_StatusReport.
- Premenovávame tabuľky v MS Access, konkrétne: odstraňujeme prefix dbo_, aby ich DSC mohol používať.

- Hotovo.

- Uložíme súbor a zatvárame MS Access. Teraz skopírujeme získaný devices.mdb na DSC server (predvolene do C:Program FilesWindowsPowershellDSCService) a nahradíme ním existujúci (ak nejaký je).
Nastavenie DSC servera na používanie SQL
- Vraciame sa k serveru DSC. Aby sme sa pripojili k SQL serveru pomocou nášho proxy súboru, vytvoríme nové ODBC pripojenie na DSC serveri. Názov, a rozlíšenie, a nastavenia pripojenia musia byť rovnaké ako pri vytváraní MDB súboru. Môžeme skopírovať už nakonfigurovaný prázdny devices.mdb odtiaľto.
- Aby sme mohli použiť devices.mdb, je potrebné vykonať zmeny v web.config opytujúceho servera DSC (predvolene – C:inetpubPSDSCPullServerweb.config):
— pre Windows Server 2012
— pre Windows Server 2016
Na tomto nastavení DSC servera je koniec.
Kontrola funkčnosti DSC servera
- Skontrolujeme, či je DSC server dostupný cez webový prehliadač.

- Teraz skontrolujeme, či správne funguje opytujúci server DSC. Na to je v module xPSDesiredStateConfiguration skript pullserversetuptests.ps1. Pred spustením tohto skriptu je potrebné nainštalovať PowerShell modul s názvom Pester. Nainštalujeme ho pomocou Install-Module -Name Pester.
- Otvoríme C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfigurationDSCPullServerSetupPullServerDeploymentVerificationTest (v príklade verzia 8.0.0.0.0).

- Otvoríme PullServerSetupTests.ps1 a skontrolujeme cestu k web.config DSC servera. Červenou farbou je vyznačená cesta k web.config, ktorú skript overí. Ak je to potrebné, zmeníme túto cestu.

- Spúšťame pullserversetuptests.ps1
Invoke-Pester .PullServerSetupTests.ps1
Všetko funguje.
- V SQL Management Studio vidíme, že spravované hosty posielajú správy na server správ DSC a údaje sa dostávajú do databázy DSC na SQL serveri.

Na tomto je všetko. V nasledujúcich článkoch plánujem hovoriť o tom, ako postaviť správy na základe získaných údajov a dotknem sa otázok o odolnosti proti poruchám a škálovateľnosti.
Zdroj: habr.com





































