PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

PowerShell Desired State Configuration (DSC) uvelike pojednostavljuje posao postavljanja i konfigurisanja operativnog sistema, uloga servera i aplikacija kada imate stotine servera.

Ali kada koristite DSC lokalno, tj. ne u MS Azureu, postoji nekoliko nijansi. Posebno su uočljivi ako je organizacija velika (od 300 radnih stanica i servera) i još nije otkrila svijet kontejnera:

  • Ne postoje potpuni izvještaji o statusu sistema. Ako potrebna konfiguracija nije primijenjena na nekim serverima, onda bez ovih izvještaja nećemo znati za to. Prilično je teško dobiti informacije od ugrađenog servera za izvještavanje, a za veliki broj hostova to također može potrajati.
  • Nedostaje skalabilnost i tolerancija grešaka. Nemoguće je izgraditi farmu DSC pull web servera koji bi imali jedinstvenu bazu podataka otpornu na greške i zajedničko skladište mof fajlova za konfiguracije, module i registracione ključeve.

Danas ću vam reći kako možete riješiti prvi problem i dobiti podatke za izvještavanje. Sve bi bilo jednostavnije kada bi se SQL mogao koristiti kao baza podataka. GOSPOĐA obećanja ugrađena podrška samo u Windows Server 2019 ili u verziji Windows servera 1803. Dohvatite podatke i koristeći OleDB provajder neće raditijer DSC Server koristi imenovani parametar koji OleDbCommand ne podržava u potpunosti.

Pronašao sam ovu metodu: za one koji koriste Windows Server 2012 i 2016, možete postavite koristeći SQL bazu podataka kao pozadinu za DSC server upita. Da bismo to uradili, kreiraćemo “proxy” u obliku .mdb datoteke sa pridruženim tabelama, koji će preusmjeriti podatke primljene iz izvještaja klijenata u bazu podataka SQL servera.

Napomena: Za Windows Server 2016 morate koristiti AccessDatabaseEngine2016x86jer Microsoft.Jet.OLEDB.4.0 više nije podržan.

Neću ulaziti u detalje o procesu postavljanja DSC pull servera, vrlo je dobro opisan ovdje. Napomenuću samo nekoliko stvari. Ako implementiramo DSC puller na istom web serveru sa WSUS-om ili Kaspersky Security Center, tada u skripti za kreiranje konfiguracije moramo promijeniti sljedeće parametre:

  1. UseSecurityBestPractices     = $false

    U suprotnom, TLS 1.0 će biti onemogućen i nećete se moći povezati na SQL bazu podataka. Kaspersky Security Center takođe neće raditi (problem bi trebalo da bude rešen u Kaspersky Security Center v11).

  2. Enable32BitAppOnWin64   = $true

    Ako ne izvršite ovu promjenu, nećete moći pokrenuti AppPool DSC server na IIS-u sa WSUS-om.

  3. Kada instalirate DSC server sa WSUS-om, onemogućite statičko i dinamičko keširanje za DSC lokaciju.

Pređimo na postavljanje DSC servera za korištenje SQL baze podataka.

Kreiranje SQL baze podataka

  1. Kreirajmo praznu SQL bazu podataka pod nazivom DSC.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  2. Kreirajmo nalog za povezivanje sa ovom bazom podataka. Prvo provjerite da li SQL server dozvoljava autentifikaciju i Windows i SQL naloga.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  3. Idite na odjeljak Mapiranje korisnika. Odaberite bazu podataka, u ovom slučaju DSC. Dajemo prava vlasnika baze podataka.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  4. Gotovo.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

Kreiranje šeme za DSC bazu podataka

Postoje dva načina za kreiranje šeme za DSC bazu podataka:

  • nezavisno, kroz TSQL skriptu
    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
  • uvezite podatke iz praznih uređaja.mdb kao dio PS modula PSDesiredStateConfiguration putem SQL čarobnjaka za uvoz podataka.

    Devices.mdb sa kojim ćemo raditi nalazi se u C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.

  1. Da biste uvezli podatke, pokrenite čarobnjak za uvoz i izvoz SQL Servera.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  2. Mi biramo odakle ćemo dobiti podatke – u našem slučaju to je Microsoft Access baza podataka. Kliknite na Next.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  3. Odaberite datoteku iz koje uvozimo dijagram.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  4. Naznačavamo gdje uvoziti - za nas je to SQL baza podataka.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  5. Odaberite SQL server (Server Name) i bazu podataka u koju ćemo uvesti podatke (DataBase).

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  6. Izaberite opciju Kopiraj podatke iz jedne ili više tabela ili pogleda (kopiranje podataka iz tabela ili pogleda).

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  7. Odabiremo tabele iz kojih ćemo uvesti šemu baze podataka.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  8. Označite polje za potvrdu Pokreni odmah i kliknite na Završi.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  9. Gotovo.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  10. Kao rezultat, tabele bi se trebale pojaviti u DSC bazi podataka.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

Postavljanje .mdb “proxy” datoteke

Kreiranje ODBC veze sa SQL serverom. Pretpostavlja se da MS Access nije instaliran na serveru koji pokreće DSC, pa se postavljanje baze podataka.mdb vrši na srednjem hostu sa instaliranim MS Accessom.

Kreirajmo sistemsku ODBC vezu sa SQL serverom (bitnost veze mora odgovarati bitnosti MS Access - 64 ili 32). Može se kreirati pomoću:
- 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

— ili ručno, pomoću čarobnjaka za povezivanje:

  1. Otvorite Administrativni alati. ODBC izvore podataka biramo ovisno o verziji instaliranog MS Accessa. Idite na karticu Sistemski DSN i kreirajte sistemsku vezu (Dodaj).

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  2. Naznačavamo da ćemo se povezati na SQL server. Kliknite na Završi.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  3. Odredite ime i server na koji ćete se povezati. Tada će se na DSC serveru morati kreirati veza sa istim parametrima.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  4. Naznačavamo da za povezivanje sa SQL serverom koristimo prethodno kreiranu prijavu sa imenom DSC.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  5. Bazu podataka specificiramo u postavkama DSC veze.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  6. Kliknite na Završi.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  7. Prije dovršetka podešavanja, provjeravamo da li veza radi (Test Data Source).

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  8. Gotovo.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

Kreiranje baze podataka devices.mdb u MS Accessu. Pokrenite MS Access i kreirajte praznu bazu podataka pod nazivom devices.mdb.

PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  1. Idite na karticu Eksterni podaci i kliknite na ODBC baza podataka. U prozoru koji se pojavi izaberite Kreiraj povezanu tabelu da biste se povezali sa izvorom podataka.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  2. U novom prozoru odaberite karticu Izvor podataka stroja i kliknite OK. U novom prozoru unesite vjerodajnice za povezivanje sa SQL serverom.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  3. Odaberite tabele koje je potrebno povezati. Označite polje Sačuvaj lozinku i kliknite na OK. Svaki put sačuvajte lozinku za sve tri tabele.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  4. U indeksima morate odabrati sljedeće:
    — TargetName za tabelu dbo_Devices;

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

    — NodeName ili IPAddress za dbo_RegistrationData;

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

    — NodeName ili IPAddress za dbo_StatusReport.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  5. Preimenujmo tabele u MS Access-u, naime: uklonite prefiks dbo_ da ih DSC može koristiti.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  6. Gotovo.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  7. Sačuvajte datoteku i zatvorite MS Access. Sada kopiramo rezultirajući devices.mdb na DSC server (po defaultu u C: Program FilesWindowsPowershellDSCService) i zamjenjujemo postojeći (ako postoji).

Konfiguriranje DSC servera za korištenje SQL-a

  1. Vraćamo se na DSC server. Da se povežemo na SQL server sa našim proxy fajlom, napravimo novu ODBC vezu na DSC serveru. Ime, dubina bita i postavke veze moraju biti isti kao kod kreiranja MDB datoteke. Odavde možete kopirati već konfigurirane prazne devices.mdb.
  2. Da biste koristili devices.mdb, morate napraviti promjene u web.config DSC pull servera (podrazumevano je C:inetpubPSDSCPullServerweb.config):

- za 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;">

- za 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;">

Ovim je završeno podešavanje DSC servera.

Provjera funkcionalnosti DSC servera

  1. Provjerimo da li je DSC serveru dostupan preko web pretraživača.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  2. Sada hajde da proverimo da li DSC pull server radi ispravno. Da biste to učinili, modul xPSDesiredStateConfiguration uključuje skriptu pullserversetuptests.ps1. Prije pokretanja ove skripte, morate instalirati Powershell modul pod nazivom Pester. Instalirajte ga Install-Module -Naziv Pester.
  3. Otvorite C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<verzija modula>DSCPullServerSetupPullServerDeploymentVerificationTest (u primjeru verzije 8.0.0.0.0).

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  4. Otvorite PullServerSetupTests.ps1 i provjerite putanju do web.config DSC servera. Put do web.config, koji će provjeriti skriptu, označen je crvenom bojom. Ako je potrebno, mijenjamo ovaj put.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  5. Pokrenite pullserversetuptests.ps1
    Invoke-Pester.PullServerSetupTests.ps1
    Vse rabotaet.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

  6. U SQL Management Studiju vidimo da administrirani hostovi šalju izvještaje na DSC izvještajni server i podaci završavaju u DSC bazi podataka na SQL serveru.

    PowerShell željena konfiguracija stanja i datoteka: dio 1. Konfiguriranje DSC Pull servera za rad sa SQL bazom podataka

To je sve. U narednim člancima planiram da vam kažem kako da napravite izveštaje na osnovu dobijenih podataka, a dotaknuću se i pitanja tolerancije grešaka i skalabilnosti.

izvor: www.habr.com

Dodajte komentar