
A PowerShell Desired State Configuration (DSC) jelentősen megkönnyíti az operációs rendszer, a szerver szerepek és az alkalmazások telepítését és konfigurálását, amikor több száz szerverrel dolgozunk.
De a DSC on-premises, azaz nem az MS Azure-ban történő használatakor néhány tényező merül fel. Ezek különösen érezhetőek, ha a szervezet nagy (300 vagy annál több munkaállomással és szerverrel rendelkezik) és még nem nyitotta meg a konténerek világát:
- Nincs teljes körű jelentés az informatikai rendszerek állapotáról. Ha a szükséges konfiguráció nem került alkalmazásra bizonyos szervereken, akkor ezek a jelentések nélkül nem fogunk értesülni róla. Az integrált jelentésszerverről az információk beszerzése meglehetősen nehézkes, nagy számú hoszt esetén pedig még időigényesebb.
- Hiányzik a skálázhatóság és a hibatűrés. Nem lehet DSC lekérdező webkiszolgáló farmot építeni, amelynek egységes hibatűrő adatbázisa és közös tárolója lenne a konfigurációs mof-fájlok, modulok és regisztrációs kulcsok számára.
Ma arról fogok beszélni, hogyan lehet megoldani az első problémát, és adatokat szerezni a jelentések készítéséhez. Minden egyszerűbb lenne, ha SQL-t használhatnánk adatbázisként. MS beépített támogatása csak Windows Server 2019-ben vagy Windows Server 1803-as verzióban érhető el. Az OleDB provider-en keresztül adatokat gyűjteni szintén , mivel a DSC-szerver név szerinti paramétert használ, amelyet az OleDbCommand nem támogat teljesen.
Találtam egy ilyen megoldást: azok számára, akik Windows Server 2012-t és 2016-t használnak, lehetőség van SQL adatbázis használatára a lekérdező DSC-szerver hátsó végének. Ehhez létrehozunk egy "proxy-t" egy .mdb fájl formájában összekapcsolt táblákkal, amely irányítja az ügyfelektől kapott jelentések adatokat a SQL-server adatbázisába.
Megjegyzés: Windows Server 2016 esetén szükséges használni , mivel a Microsoft.Jet.OLEDB.4.0 már nem támogatott.
Nem fogom részletesen tárgyalni a lekérdező DSC-szerver telepítési folyamatát, nagyon jól le van írva . Csak pár dolgot említek meg. Ha a lekérdező DSC-t egy webszerverre telepítjük WSUS-szal vagy Kaspersky Security Center-rel, akkor a konfigurációs fájl létrehozásához szükséges szkriptben az alábbi paramétereket kell módosítani:
UseSecurityBestPractices = $falseKülönben a TLS 1.0 le lesz tiltva, és nem tud kapcsolódni a SQL adatbázishoz. A Kaspersky Security Center sem fog működni (a problémát a Kaspersky Security Center v11-ben kell megoldani).
Enable32BitAppOnWin64 = $trueHa ezt a módosítást nem hajtjuk végre, nem tudjuk elindítani az AppPool DSC-szerverét IIS-en a WSUS-sal.
- A DSC-szerver WSUS-szal való telepítésekor tiltsa le a statikus és dinamikus gyorsítást a DSC webhely számára.
Lépjünk tovább a DSC-szerver SQL adatbázis használatának beállítására.
SQL adatbázis létrehozása
- Hozzunk létre egy üres SQL adatbázist DSC néven.


- Hozzunk létre egy felhasználói fiókot a kapcsolódáshoz ehhez az adatbázishoz. Először ellenőrizzük, hogy az SQL-szerveren engedélyezve van a Windows és SQL felhasználói fiókok hitelesítése.


- Átmegyünk a Felhasználói hozzárendelés részhez. Kiválasztjuk az adatbázist, jelen esetben – DSC. Megadjuk az adatbázis tulajdonosi jogosultságait.

- Kész.

Sémák létrehozása a DSC adatbázishoz
A DSC adatbázishoz a sémát kétféleképpen hozhatjuk létre:
- önállóan, TSQL szkripttel
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 - az adatokat importálni a üres devices.mdb-ből a PSDesiredStateConfiguration PS-modul részeként az SQL Adatvarázsló segítségével.
A Devices.mdb, amellyel dolgozni fogunk, a C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer útvonalon található.
- Az adatok importálásához indítsa el az SQL Server Import and Export Wizard-ot.

- Válassza ki, honnan szeretnénk adatokat gyűjteni – az esetünkben ez a Microsoft Access adatbázis. Kattintson a Tovább gombra.

- Válassza ki a fájlt, ahonnan az sémát importálni fogjuk.

- Adja meg, hova szeretnénk importálni – esetünkben ez SQL adatbázis.

- Válassza ki az SQL szervert (Szerver név) és az adatbázist, ahová importálni fogjuk az adatokat (Adatbázis).

- Válassza a Másolás adatokat egy vagy több táblából vagy nézetből (adatok másolása táblákból vagy nézetekből) lehetőséget.

- Válassza ki azokat a táblákat, amelyekből az adatbázis sémáját importálni szeretnénk.

- Jelölje be az Azonnali futtatás lehetőséget, majd kattintson a Befejezés gombra.

- Kész.

- Ennek eredményeként a DSC adatbázisban tábláknak kell megjelenniük.

A .mdb „proxy” fájl beállítása
ODBC csatlakozás létrehozása SQL szerverhez. Feltételezhető, hogy az MS Access nincs telepítve a DSC-vel rendelkező szerveren, ezért a databases.mdb beállítása egy köztes hoszton történik, amelyen telepítve van az MS Access.
Hozzunk létre egy rendszer ODBC csatlakozást az SQL szerverhez (a csatlakozás bitmérete egyezzen meg az MS Access bitméretével – 64 vagy 32). Ezt a következő módokon hozhatjuk létre:
— PowerShell parancs segítségével:
Add-OdbcDsn –Name DSC –DriverName 'SQL Server' –Platform '' –DsnType System –SetPropertyValue @('Description=DSC Pull Server',"Server=", 'Trusted_Connection=yes', 'Database=DSC') –PassThru— vagy manuálisan, a csatlakozási varázslóval:
- Nyissuk meg az Administrative tools-t. Válasszuk az ODBC adatforrásokat az MS Access telepített verziója szerint. Lépjünk a System DSN fülre és hozzunk létre egy rendszer csatlakozást (Add).

- Jegezzük be, hogy SQL szerverhez csatlakozunk. Kattintsunk a Finish gombra.

- Adjuk meg a csatlakozáshoz szükséges nevet és szervert. Ezután a DSC szerveren ugyanazokkal a paraméterekkel kell csatlakozást létrehozni.

- Jegezzük be, hogy SQL szerverhez való csatlakozáskor az általunk korábban létrehozott DSC nevű bejelentkezést használjuk.

- Adjuk meg az adatbázist a DSC csatlakozási beállításainál.

- Kattintsunk a Finish gombra.

- A beállítások befejezése előtt ellenőrizzük, hogy a csatlakozás működik (Test Data Source).

- Kész.

devices.mdb adatbázis létrehozása MS Access-ben. Indítsuk el az MS Access-t és hozzunk létre egy üres devices.mdb adatbázist.

- Lépjünk a Külső adatok fülre, kattintsunk az ODBC adatbázisra. A megjelenő ablakban válasszuk az Adatforrással való kapcsolathoz tartozó összekapcsolt táblázat létrehozása lehetőséget.

- Az új ablakban válasszuk a Machine Data Source fület és kattintsunk az OK gombra. Az új ablakban adjuk meg a SQL szerverhez való csatlakozáshoz szükséges hitelesítő adatokat.

- Válasszuk ki az összekapcsolandó táblázatokat. Pipáljuk be a Jelszó megőrzése lehetőséget és kattintsunk az OK gombra. Jelszót minden egyes táblázathoz meg kell őrizni.

- Az indexeknél a következőket kell választani:
— TargetName a dbo_Devices táblához;
— NodeName vagy IPAddress a dbo_RegistrationData-hoz;
— NodeName vagy IPAddress a dbo_StatusReport-hoz.
- A táblázatokat átnevezzük az MS Access-ben, nevezetesen: eltávolítjuk a dbo_ előtagot, hogy a DSC használhassa őket.

- Kész.

- Mentjük a fájlt és bezárjuk az MS Access-t. Most áttesszük a létrehozott devices.mdb-t a DSC szerverre (alapértelmezés szerint a C:Program FilesWindowsPowershellDSCService mappába) és helyettesítjük a meglévő fájlt (ha van ilyen).
DSC szerver beállítása SQL használatához
- Visszatérünk a DSC szerverhez. Az SQL szerverhez a proxy fájlunkkal való csatlakozáshoz új ODBC kapcsolatot kell létrehoznunk a DSC szerveren. A név, a bitméret és a kapcsolati beállítások ugyanazok kell, hogy legyenek, mint az MDB fájl létrehozásakor. A már beállított üres devices.mdb fájlt innen is átmásolhatjuk.
- A devices.mdb használatához módosításokat kell végeznünk a DSC lekérdező szerver web.config fájljában (alapértelmezés szerint – C:inetpubPSDSCPullServerweb.config):
— Windows Server 2012-hez
\n— Windows Server 2016-hoz
\nEzzel befejeződik a DSC szerver beállítása.
A DSC szerver működésének ellenőrzése
- Ellenőrizzük, hogy a DSC szerver elérhető-e web böngészőn keresztül.

- Most ellenőrizzük, hogy a DSC lekérdező szerver megfelelően működik-e. Ehhez az xPSDesiredStateConfiguration modul részeként található pullserversetuptests.ps1 scriptet kell futtatnunk. A script futtatása előtt telepíteni kell a Pester nevű Powershell modult. Telepítsük az Install-Module -Name Pester paranccsal.
- Nyissuk meg a C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfigurationDSCPullServerSetupPullServerDeploymentVerificationTest fájlt (példánkban a verzió 8.0.0.0.0).

- Nyissuk meg a PullServerSetupTests.ps1 fájlt, és ellenőrizzük a DSC szerver web.config fájljának elérési útját. A script azt a web.config elérési utat fogja ellenőrizni, amelyet pirossal kiemeltem. Ha szükséges, módosítsuk ezt az utat.

- Futtassuk a pullserversetuptests.ps1 scriptet
Invoke-Pester .PullServerSetupTests.ps1
Minden működik.
- Az SQL Management Studio-ban láthatjuk, hogy az adminisztrált hosztok jelentéseket küldenek a DSC jelentéskészítő szerverre, és az adatok bekerülnek a DSC adatbázisába az SQL szerveren.

Ezzel kész is vagyunk. A következő cikkekben tervezem bemutatni, hogyan készíthetünk jelentéseket a begyűjtött adatok alapján, és foglalkozom a hibatűréssel és a skálázhatósággal kapcsolatos kérdésekkel.
Forrás: habr.com





































