PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

PowerShell Desired State Configuration (DSC) výrazně zjednodušuje nasazení a konfiguraci operačního systému, serverových rolí a aplikací, když máte stovky serverů.

Ale při použití DSC on-premises, tj. ne v MS Azure, nastává několik nuancí. Jsou obzvlášť patrné, pokud je organizace velká (od 300 pracovních stanic a serverů) a dosud neotevřela svět kontejnerů:

  • Neexistují plnohodnotné zprávy o stavu systémů. Pokud se požadovaná konfigurace na některých serverech neaplikovala, bez těchto zpráv se to nedozvíme. Získat informace z vestavěného serveru zpráv je poměrně obtížné a pro velké množství hostitelů také časově náročné.
  • Chybí škálovatelnost a odolnost vůči poruchám. Není možné postavit farmu dotazujících webových serverů DSC, které by měly jedinečnou odolnou databázi a společné úložiště mof-souborů konfigurací, modulů a registračních klíčů.

Dnes vám povím, jak vyřešit první problém a získat data pro sestavení zpráv. Bylo by to jednodušší, kdybychom mohli použít SQL jako databázi. MS slibuje integrovanou podporu pouze ve Windows Server 2019 nebo v buildu Windows server 1803. Získat data pomocí OleDB provider také nebude možné, protože DSC-server používá pojmenovaný parametr, který není plně podporován OleDbCommand.

Našel jsem takový způsob: ti, kteří používají Windows Server 2012 a 2016, mohou nastavit použití SQL DB jako backendu pro dotazující DSC-server. K tomu vytvoříme "proxy" ve formě .mdb souboru se spojenými tabulkami, který přesměruje data obdržená ze zpráv klientů do databáze SQL serveru.

Poznámka: pro Windows Server 2016 je nutné použít AccessDatabaseEngine2016x86, protože Microsoft.Jet.OLEDB.4.0 již není podporován.

Nebudu se podrobněji zabývat procesem nasazení dotazujícího DSC-serveru, je velmi dobře popsán tady. Pouze zdůrazním pár bodů. Pokud nasazujeme dotazující DSC na jednom webovém serveru se WSUS nebo Kaspersky Security Center, je nutné ve skriptu pro vytvoření konfigurace změnit následující parametry:

  1. UseSecurityBestPractices = $false

    Jinak bude TLS 1.0 zakázán a nebudete se moci připojit k databázi SQL. Kaspersky Security Center také nebude fungovat (problém by měl být vyřešen v Kaspersky Security Center v11).

  2. Enable32BitAppOnWin64 = $true

    Pokud toto změnění nebude provedeno, nebude možné spustit AppPool serveru DSC na IIS s WSUS.

  3. Při instalaci serveru DSC spolu s WSUS deaktivujte statické a dynamické kešování pro web DSC.

Přejdeme k nastavení serveru DSC pro použití SQL DB.

Vytvoření SQL DB

  1. Vytvoříme prázdnou databázi SQL s názvem DSC.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  2. Vytvoříme účet pro připojení k této databázi. Předtím zkontrolujte, že na SQL serveru je povoleno ověřování účtů jak Windows, tak SQL.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  3. Přejdeme do sekce User Mapping. Vybereme databázi, v tomto případě – DSC. Dáme práva vlastníka databáze.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  4. Hotovo.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

Vytvoření schémy pro databázi DSC

Schemu pro databázi DSC lze vytvořit dvěma způsoby:

  • sami, pomocí skriptu v 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
  • importovat data z prázdného devices.mdb v rámci PS modulu PSDesiredStateConfiguration prostřednictvím Průvodce importem dat SQL.

    Devices.mdb, se kterým budeme pracovat, se nachází v C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.

  1. Pro import dat spustíme Průvodce importem a exportem SQL Server.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  2. Vybereme, odkud budeme brát data – v našem případě to je databáze Microsoft Access. Klikneme na Další.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  3. Vyberáme soubor, odkud importujeme schéma.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  4. Uvedeme, kam importovat – máme to jako SQL DB.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  5. Vybereme SQL server (Server Name) a databázi, do které budeme importovat data (DataBase).

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  6. Vybereme možnost Kopírovat data z jedné nebo více tabulek nebo pohledů (kopírování dat z tabulek nebo pohledů).

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  7. Vyberáme tabulky, ze kterých budeme importovat schéma DB.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  8. Zaškrtneme možnost Spustit ihned a klikneme na Dokončit.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  9. Hotovo.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  10. V důsledku toho by se v DB DSC měly objevit tabulky.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

Nastavení .mdb „proxi“ souboru

Vytvoření ODBC připojení k SQL serveru. Předpokládá se, že MS Access není nainstalován na serveru s DSC, a proto je nastavení databases.mdb prováděno na mezilehlém hostiteli s nainstalovaným MS Access.

Vytvoříme systémové ODBC připojení k SQL serveru (architektura připojení by měla souhlasit s architekturou MS Access – 64 nebo 32). Můžeme to vytvořit pomocí:
— PowerShell příkazu:

Add-OdbcDsn –Name DSC –DriverName 'SQL Server' –Platform '' –DsnType System –SetPropertyValue @('Description=DSC Pull Server',"Server=",'Trusted_Connection=yes','Database=DSC') –PassThru

— nebo ručně, pomocí průvodce připojením:

  1. Otevřeme Administrativní nástroje. Vybereme ODBC datové zdroje podle verze nainstalovaného MS Access. Přepneme na kartu System DSN a vytvoříme systémové připojení (Přidat).

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  2. Uvedeme, že se chceme připojit k SQL serveru. Klikneme na Dokončit.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  3. Uvedeme název a server pro připojení. Poté bude nutné vytvořit připojení se stejnými parametry na serveru DSC.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  4. Uvedeme, že pro připojení k SQL serveru používáme dříve vytvořený účet se jménem DSC.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  5. Uvedeme databázi v nastavení připojení DSC.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  6. Klikneme na Dokončit.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  7. Před dokončením nastavení zkontrolujeme, že připojení funguje (Otestovat datový zdroj).

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  8. Hotovo.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

Vytvoření databáze devices.mdb v MS Access. Spustíme MS Access a vytvoříme prázdnou databázi s názvem devices.mdb.

PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  1. Přejdeme na kartu Vnější data, klikneme na ODBC databázi. V zobrazeném okně vybereme Vytvořit propojenou tabulku pro spojení se zdrojem dat.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  2. V novém okně vybereme kartu Machine Data Source a klikneme na OK. V novém okně zadáme přihlašovací údaje pro připojení k SQL serveru.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  3. Vybereme tabulky, které je třeba propojit. Zaškrtneme možnost Uložit heslo a klikneme na OK. Heslo je nutné uložit pokaždé pro všechny tři tabulky.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  4. V indexech je třeba vybrat následující:
    — TargetName pro tabulku dbo_Devices;

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

    — NodeName nebo IPAddress pro dbo_RegistrationData;

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

    — NodeName nebo IPAddress pro dbo_StatusReport.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  5. Přejmenujeme tabulky v MS Access, konkrétně: odstraníme prefix dbo_, aby je DSC mohl používat.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  6. Hotovo.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  7. Uložíme soubor a zavřeme MS Access. Nyní zkopírujeme získaný devices.mdb na DSC server (podle výchozího nastavení do C:Program FilesWindowsPowershellDSCService) a nahradíme tím existující (pokud existuje).

Nastavení DSC serveru pro použití SQL

  1. Vracíme se k serveru DSC. Pro připojení k SQL serveru s naším proxy souborem vytvoříme nové ODBC připojení na serveru DSC. Název, architektura a nastavení připojení by měly být stejné jako při vytváření MDB souboru. Můžete zkopírovat již nastavený prázdný devices.mdb odsud.
  2. Pro použití devices.mdb je nutné provést změny v souboru web.config dotazujícího serveru DSC (výchozí – C:inetpubPSDSCPullServerweb.config):

— pro Windows Server 2012

— pro Windows Server 2016

Tímto je nastavení DSC serveru dokončeno.

Kontrola funkčnosti DSC serveru

  1. Zkontrolujeme, zda je DSC server dostupný přes webový prohlížeč.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  2. Nyní provedeme kontrolu, zda správně funguje dotazující server DSC. K tomu je součástí modulu xPSDesiredStateConfiguration skript pullserversetuptests.ps1. Před spuštěním tohoto skriptu je nutné nainstalovat modul PowerShell s názvem Pester. Nainstalujeme ho příkazem Install-Module -Name Pester.
  3. Otevíráme C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfigurationDSCPullServerSetupPullServerDeploymentVerificationTest (v příkladu verze 8.0.0.0.0).

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  4. Otevíráme PullServerSetupTests.ps1 a kontrolujeme cestu k souboru web.config DSC serveru. Červeně jsem označil cestu k web.config, kterou skript zkontroluje. Pokud je potřeba, měníme tuto cestu.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  5. Spouštíme pullserversetuptests.ps1
    Invoke-Pester .PullServerSetupTests.ps1
    Všechno funguje.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

  6. Ve SQL Management Studiu vidíme, že spravované hostitele zasílají zprávy na server zpráv DSC a data se dostávají do databáze DSC na SQL serveru.

    PowerShell Desired State Configuration a pilník: část 1. Nastavení DSC Pull Serveru pro práci s databází SQL

Tímto je vše hotovo. V následujících článcích plánuju vyprávět, jak na získaných datech vytvořit zprávy, a dotknu se otázek o odolnosti a škálovatelnosti.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster