
PowerShell Desired State Configuration (DSC) lihtsustab oluliselt operatsioonisüsteemi, serveri rollide ja rakenduste kasutuselevõttu ja seadistamist, kui teil on sadu servereid.
Kuid DSC-d kohapeal, st mitte MS Azure'is, kasutades tekib paar nüanssi. Need on eriti tuntavad suurtes organisatsioonides (alates 300 tööstusjaamast ja serverist), kus konteinerite maailm pole veel avatud:
- Puuduvad kvaliteetsed süsteemi oleku aruanded. Kui vajalikke seadistusi ei rakendatud mõnedes serverites, ei saa me nende aruannete puudumise tõttu seda teada. Integreeritud aruande serverist teabe saamine on päris keeruline ja suurte hostide arvu puhul ka aeganõudev.
- Puudub skaleeritavus ja rikete taluvus. Ei ole võimalik luua DSC küsitavaid veebiservereid, millel oleks ühine rikete taluvuse andmebaas ja ühine mof-failide, moodulite ja registri võtmete hoidla.
Täna räägin, kuidas saab lahendada esimese probleemi ja saada andmeid aruannete koostamiseks. Kõik oleks lihtsam, kui andmebaasina saaks kasutada SQL-i. MS sisseehitatud toe ainult Windows Server 2019 või Windows Server 1803 buildis. Andmete hankimine OleDB pakkuja abil , kuna DSC-server kasutab nimetatud parameetrit, mida OleDbCommand ei toeta täielikult.
Leidsin sellise meetodi: need, kes kasutavad Windows Server 2012 ja 2016, võivad SQL andmebaasi kasutamise backend’ina küsitletava DSC-serveri jaoks. Selleks loome .mdb faili kujul "proksi", milles on seotud tabelid, mis suunavad kliendi aruannetest saadud andmed SQL-serveri andmebaasi.
Märkus: Windows Server 2016 jaoks tuleb kasutada , kuna Microsoft.Jet.OLEDB.4.0 ei ole enam toetatud.
Ma ei hakka pikalt peatuma DSC-serveri küsimise seadistamise protsessil, see on väga hästi kirjeldatud . Tahan märkida vaid paar asjaolu. Kui käivitame küsitleva DSC ühel veebiserveril koos WSUS-i või Kaspersky Security Centeriga, tuleb konfiguratsiooniskriptis muuta järgmisi parameetreid:
UseSecurityBestPractices = $falseVastasel juhul keelatakse TLS 1.0 ja te ei saa SQL andmebaasiga ühendust. Kaspersky Security Center samuti ei tööta (probleem peaks olema lahendatud Kaspersky Security Center v11-s).
Enable32BitAppOnWin64 = $trueKui seda muudatust ei tehta, ei õnnestu AppPool DSC serveri käivitamine IIS-is koos WSUS-iga.
- DSC serveri installimisel koos WSUS-iga keelake staatiline ja dünaamiline vahemälu DSC saidi jaoks.
Liigume edasi DSC serveri seadistamise juurde SQL andmebaasi kasutamiseks.
SQL andmebaasi loomine
- Loome tühja SQL andmebaasi nimega DSC.


- Loome ühenduse konto selle andmebaasi ühendamiseks. Kontrollige eelnevalt, et SQL serveris oleks lubatud Windowsi ja SQL-i kontode autentimine.


- Liigume jaotisse User Mapping. Valime andmebaasi, antud juhul – DSC. Anname andmebaasi omandi õigused.

- Valmis.

Schema loomine DSC andmebaasi jaoks
DSC andmebaasi skeemi saab luua kahel viisil:
- ise, TSQL skripti kaudu
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 - importida andmeid tühjast devices.mdb-st PS-mooduli PSDesiredStateConfiguration kaudu SQL-i andmete importimise viisardi kaudu.
Devices.mdb, millega me töötame, asub C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.
- Andmete importimiseks käivitame SQL Serveri importimise ja eksportimise viisardi.

- Valime, kust me andmeid võtame – meie juhul on see Microsoft Accessi andmebaas. Klõpsa 'Järgmine'.

- Valime faili, kust impordime skeemi.

- Määrame, kuhu imporditakse – meil on see SQL-tabel.

- Valime SQL-serveri (Server Name) ja andmebaasi, kuhu andmed imporditakse (DataBase).

- Valime valiku Copy data from one or more tables or views (andmete kopeerimine tabelitest või vaadetest).

- Valime tabelid, millest impordime andmebaasi skeemi.

- Asetame linnukese Run Immediately ja klõpsame Finish.

- Valmis.

- Tulemuseks peaks andmebaasis DSC ilmuma tabelid.

MDB ‚proxy‘ faili seadistamine
ODBC-ühenduse loomine SQL-serveriga. Eeldatakse, et MS Access ei ole installitud serveris, kus asub DSC, seega seadistatakse databases.mdb vahehostis, kus on MS Access.
Loome süsteemse ODBC-ühenduse SQL-serveriga (ühenduse bitisus peab olema sama, mis MS Accessil – 64 või 32). Seda saab luua järgmiselt:
— Powershelli käsureaga:
Add-OdbcDsn –Name DSC –DriverName 'SQL Server' –Platform '' –DsnType System –SetPropertyValue @('Description=DSC Pull Server',"Server=", 'Trusted_Connection=yes', 'Database=DSC') –PassThru— või käsitsi, ühenduse maagia abil:
- Avame Administrative tools. Valime ODBC andmeallikad, sõltuvalt installitud MS Accessi versioonist. Liigume vahekaardile System DSN ja loome süsteemse ühenduse (Add).

- Määrame, et ühendame SQL-serveriga. Vajutame Lõpeta.

- Sisestame ühendamiseks nime ja serveri. Hiljem tuleb luua serveris ühendus samade parameetritega.

- Määrame, et SQL-serveriga ühendamiseks kasutatakse eelnevalt loodud kasutajanime DSC.

- Määrame DB DSC ühenduse seadetes.

- Vajutame Lõpeta.

- Enne seadistamise lõpetamist kontrollime, et ühendus töötab (Test Data Source).

- Valmis.

Loomine andmebaas devices.mdb MS Accessis. Käivitame MS Accessi ja loome tühi andmebaas nimega devices.mdb.

- Läheme vahekaardile Välised andmed, klõpsame ODBC andmebaasil. Ilmunud aknas valime Luua seotud tabel andmeallikaga ühendamiseks.

- Uues aknas valime vahekaardi Machine Data Source ja vajutame OK. Uues aknas sisestame SQL-serverile ühendamiseks kasutatavad volikirjad.

- Valime tabelid, mida on vaja lingida. Märgime ruutu Salvestada parool ja vajutame OK. Parooli tuleb igakord salvestada kolme tabeli jaoks.

- Indeksite valikul tuleb valida järgmised:
— TargetName tabeli dbo_Devices jaoks;
— NodeName või IPAddress tabeli dbo_RegistrationData jaoks;
— NodeName või IPAddress tabeli dbo_StatusReport jaoks.
- Nimeame MS Accessi tabelid, eemaldades dbo_ eeltee, et DSC saaks neid kasutada.

- Valmis.

- Salvestame faili ja sulgeme MS Accessi. Nüüd kopeerime saadud devices.mdb DSC-serverisse (vaikimisi C:Program FilesWindowsPowershellDSCService) ja asendame olemasoleva (kui see on olemas).
DSC-serveri seadistamine SQL-i kasutamiseks
- Naaseme DSC-serverisse. SQL-serveriga ühenduse loomiseks meie proxy-failiga loome uue ODBC-ühenduse DSC-serveris. Nimi, arhitektuur ja ühenduse seaded peavad olema samad nagu MDB-faili loomisel. Siit võib kopeerida juba seadistatud tühja devices.mdb faili.
- devices.mdb kasutamiseks tuleb teha muudatusi DSC-i serveri web.config failis (vaikimisi C:inetpubPSDSCPullServerweb.config):
— Windows Server 2012 jaoks
— Windows Server 2016 jaoks
DSC-serveri seadistamine on nüüd lõpetatud.
DSC-serveri töökindluse kontrollimine
- Kontrollime, kas DSC-server on veebibrauseri kaudu ligipääsetav.

- Nüüd kontrollime, kas DSC serveri küsitlemine töötab õigesti. Selleks on xPSDesiredStateConfiguration moodulis skript pullserversetuptests.ps1. Enne selle skripti käivitamist tuleb installida Powershell moodul nimega Pester. Installime selle käsuga Install-Module -Name Pester.
- Avame C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfigurationDSCPullServerSetupPullServerDeploymentVerificationTest (näite versioon 8.0.0.0.0).

- Avame PullServerSetupTests.ps1 ja kontrollime DSC serveri web.configi teed. Punasega on välja toodud tee web.configini, mida skript kontrollib. Vajadusel muudame seda teed.

- Käivitame pullserversetuptests.ps1
Invoke-Pester .PullServerSetupTests.ps1
Kõik töötab.
- SQL Management Studios näeme, et haldatud hostid saadavad DSC raportite serverile aruandeid ja andmed jõuavad SQL serveri DSC andmebaasi.

Sellega on kõik. Järgmistes artiklites plaanin rääkida, kuidas saadud andmetest aruandeid koostada, ning puudutan ka küsimusi, mis on seotud talitlusvõime ja skaleeritavusega.
Allikas: habr.com





































