PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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 sľubuje má zabudovanú podporu len vo Windows Server 2019 alebo v buildu Windows Server 1803. Získať údaje pomocou OleDB provider tiež nie je možné, 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 nastaviť 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ť AccessDatabaseEngine2016x86, 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é tu. 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:

  1. UseSecurityBestPractices = $false

    Inak 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).

  2. Enable32BitAppOnWin64 = $true

    Ak toto zmenenie nezavedie, nebude možné spustiť AppPool DSC servera na IIS so WSUS.

  3. 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

  1. Vytvoríme prázdnu databázu SQL s názvom DSC.

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

  2. 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.

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

  4. Hotovo.

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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.

  1. Na import dát spustíme SQL Server Import and Export Wizard.

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

  9. Hotovo.

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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:

  1. 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ť).

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

  5. Uvedieme databázu v nastaveniach pripojenia DSC.

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

  6. Klikneme na Dokončiť.

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

  8. Hotovo.

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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

PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

  2. 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.

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

  3. 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.

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

  4. V indexoch je potrebné vybrať nasledujúce:
    — TargetName pre tabuľku dbo_Devices;

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

    — NodeName alebo IPAddress pre dbo_RegistrationData;

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

    — NodeName alebo IPAddress pre dbo_StatusReport.

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

  5. Premenovávame tabuľky v MS Access, konkrétne: odstraňujeme prefix dbo_, aby ich DSC mohol používať.

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

  6. Hotovo.

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

  7. 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

  1. 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.
  2. 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

  1. Skontrolujeme, či je DSC server dostupný cez webový prehliadač.

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

  2. 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.
  3. Otvoríme C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfigurationDSCPullServerSetupPullServerDeploymentVerificationTest (v príklade verzia 8.0.0.0.0).

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

  4. 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.

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

  5. Spúšťame pullserversetuptests.ps1
    Invoke-Pester .PullServerSetupTests.ps1
    Všetko funguje.

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

  6. 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.

    PowerShell Desired State Configuration a súbor: časť 1. Nastavenie DSC Pull Server pre prácu s databázou SQL

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

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster