
PowerShell Desired State Configuration (DSC) lihtsustab operatsioonisüsteemi, serveri rollide ja rakenduste juurutamist ja konfigureerimist oluliselt, kui teil on sadu servereid.
Kuid DSC-d kasutades kohalikes tingimustes, st mitte MS Azure'is, tekib paar nüanssi. Need on eriti tuntavad, kui organisatsioon on suur (alates 300 tööjaamast ja serverist) ja seal ei ole veel konteinerite maailma avatud:
- Kuna puuduvad täielikud süsteemi seisundi aruanded. Kui vajalik konfiguratsioon ei rakendunud mõnel serveril, siis ilma nende aruandeta me seda ei tea. Sisseehitatud aruande serverist on teabe saamine üsna keeruline ning suure hulga hostide korral ka aeganõudev.
- Puudub skaleeritavus ja rikete taluvus. Ei ole võimalik luua DSC küsitavate veebiserverite farmi, millel oleks ühine rikete taluvuse andmebaas ja ühine konfiguratsioonide, moodulite ja registri võtmete mof-failide hoidla.
Täna räägin, kuidas esimest probleemi lahendada ja saada andmeid aruandluse koostamiseks. Kõik oleks lihtsam, kui andmebaasina oleks võimalik kasutada SQL-i. MS sisseehitatud tuge ainult Windows Server 2019-s või Windows Server 1803 versioonis. Andmete saamine OleDB pakkuja abil ei õnnestu ka Olen leidnud sellise viisi: neile, kes kasutavad Windows Server 2012 ja 2016, on võimalik
kasutada SQL andmebaasi küsimise DSC serveri tagaplaanina. Selleks loome "proksi" .mdb faili kujul seotud tabelitega, mis suunab andmed, mis saadakse klientide aruannetest, SQL-serveri andmebaasi. Märkus: Windows Server 2016 jaoks tuleb kasutada
AccessDatabaseEngine2016x86 Ma ei jää selle DSC küsiva serveri juurutamise protsessi juurde peatuma, see on väga hästi kirjeldatud
. Tõstan esile vaid paar punkti. Kui me juurutame DSC küsiva serveri ühel veebiserveril koos WSUS-i või Kaspersky Security Centeriga, siis tuleb konfiguratsiooni loomise skriptis muuta järgmisi parameetreid: UseSecurityBestPractices = $false
Vastasel juhul TLS 1.0 keelatakse, te ei pääse SQL andmebaasi. Kaspersky Security Center samuti ei tööta (probleem peaks olema lahendatud Kaspersky Security Center v11-s).Enable32BitAppOnWin64 = $true
Käivita 32BitAppWin64 = $trueKui muudatust ei tehta, ei ole võimalik käivitada AppPool DSC-serverit IIS-is koos WSUS-iga.
- DSC-serveri installimisel koos WSUS-iga keela staatiline ja dünaamiline vahemälu DSC saidil.
Liigume edasi DSC serveri seadistamiseks SQL andmebaasi kasutamiseks.
SQL andmebaasi loomine
- Loome tühja SQL andmebaasi nimega DSC.


- Loome konto, et sellele andmebaasile juurde pääseda. Veendu, et SQL-serveris on lubatud nii Windowsi kui ka SQL-i kasutajakonto autentimine.


- Liigume jaotisse User Mapping. Valime andmebaasi, sel juhul – DSC. Anname andmebaasi omaniku õigused.

- Valmis.

Andmebaasi DSC jaoks skeemi loomine
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 andmed tühjast devices.mdb failist PSDesiredStateConfiguration PS-moduli kaudu SQL Andmete Impordi Nõustaja abil.
Devices.mdb, millega me töötame, asub C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.
- Andmete importimiseks käivitage SQL Serveri Import and Export Wizard.

- Valime, kust me andmeid võtame – meie puhul on see Microsoft Access andmebaas. Vajutame Next.

- Valime faili, kust me skeemi importime.

- Määrame, kuhu importida – meil on see SQL andmebaas.

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

- Valime valiku Copy data from one or more tables or views (andmete kopeerimine ühest või mitmest tabelist või vaatepunktist).

- Valime tabelid, millest me andmebaasi skeemi impordime.

- Paneme märgi Run Immediately ja vajutame Finish.

- Valmis.

- Tulemuseks peaks DSC andmebaasis olema tabelid.

Seadistamine .mdb "proksi" faili
ODBC-ühenduse loomine SQL-serveriga. Eeldatakse, et MS Access ei ole serveris, kus on DSC, seega seadistatakse databases.mdb vaheserveris, kus on MS Access juba installitud.
Loomeme süsteemse ODBC-ühenduse SQL-serveriga (ühenduse arhitektuur peab vastama MS Accessi arhitektuurile – 64 või 32). Selle saab luua järgmistel viisidel:
— PowerShelli käsklusega:
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, ühenduste maagia abil:
- Avame haldustööriistad. Valime ODBC andmeallika vastavalt installitud MS Accessi versioonile. Liigume System DSN vahelehele ja loome süsteemiühenduse (Add).

- Märkime, et ühendume SQL-serveriga. Vajutame Finish.

- Märkime ühenduse nime ja serveri. Seejärel tuleb luua ühendus samade parameetritega DSC-serveris.

- Märkime, et SQL-serveriga ühendamiseks kasutatakse eelnevalt loodud konto nimega DSC.

- Märkime DSC ühenduse seadetes andmebaasi.

- Vajutame Finish.

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

- Valmis.

Andmebaasi devices.mdb loomine MS Accessis. Käivitame MS Accessi ja loome tühja andmebaasi nimega devices.mdb.

- Liigume välistesse andmetesse, klõpsame ODBC andmebaasil. Ilmunud aknas valime Loo seotud tabel andmeallika sidumiseks.

- Uues aknas valime vahepealse Machine Data Source ja vajutame OK. Uues aknas sisestame SQL-serveriga ühendamiseks vajalikud mandaadid.

- Valime tabelid, mida on vaja siduda. Märgime ruut Säästa parool ja vajutame OK. Parooli tuleb iga kord kõigi kolme tabeli jaoks salvestada.

- Indeksites tuleb valida järgmist:
— TargetName tabeli dbo_Devices jaoks;
— NodeName või IPAddress tabeli dbo_RegistrationData jaoks;
— NodeName või IPAddress tabeli dbo_StatusReport jaoks.
- Muudame tabelite nimesid MS Accessis, nimelt: eemaldame eesliite dbo_, 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 selle olemasolevaga (kui see on olemas).
DSC-serveri seadistamine SQL-i kasutamiseks
- Naasime tagasi DSC serveri juurde. Et ühendada SQL-server meie proxy-failiga, loome DSC serveris uue ODBC ühenduse. Nimi, suurus ja ühenduse seadistused peavad olema samad nagu MDB-faili loomisel. Saame kopeerida juba seadistatud tühja devices.mdb siit.
- Et kasutada devices.mdb, tuleb teha muudatusi DSC kuttserveri web.config failis (vaikimisi – C:inetpubPSDSCPullServerweb.config):
— Windows Server 2012 jaoks
— Windows Server 2016 jaoks
Sellega on DSC serveri seadistamine lõpetatud.
DSC serveri töö kontrollimine
- Kontrollime, kas DSC server on kergesti ligipääsetav veebibrauseri kaudu.

- Nüüd kontrollime, kas DSC kuttserver töötab õigesti. Selleks on xPSDesiredStateConfiguration moodulis skript pullserversetuptests.ps1. Enne skripti käivitamist on vajalik installida Powershelli moodul nimega Pester. Paigaldame selle Install-Module -Name Pester.
- Avame C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfigurationDSCPullServerSetupPullServerDeploymentVerificationTest (näites versioon 8.0.0.0.0).

- Avame PullServerSetupTests.ps1 ja kontrollime DSC serveri web.config faili teed. Punasega on välja toodud web.config tee, mida skript kontrollib. Kui on vajalik, muudame seda teed.

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

Sellega on kõik. Järgmistes artiklites plaanin rääkida, kuidas esitatud andmete põhjal aruandeid koostada ja puudutada talitlushäirete ja skaleeritavuse küsimusi.
Allikas: habr.com





































