Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

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

Ale při použití DSC on-premise, tzn. ne v MS Azure, tam je pár nuancí. Jsou zvláště patrné, pokud je organizace velká (od 300 pracovních stanic a serverů) a dosud neobjevila svět kontejnerů:

  • Neexistují žádné úplné zprávy o stavu systémů. Pokud na některých serverech nebyla použita požadovaná konfigurace, pak se bez těchto zpráv o tom nedozvíme. Je poměrně obtížné získat informace z vestavěného reportovacího serveru a pro velký počet hostitelů to může také trvat dlouho.
  • Chybí škálovatelnost a odolnost proti chybám. Je nemožné vybudovat farmu DSC pull webových serverů, které by měly jedinou databázi odolnou proti chybám a společné úložiště mof souborů pro konfigurace, moduly a registrační klíče.

Dnes vám řeknu, jak můžete vyřešit první problém a získat data pro reportování. Vše by bylo jednodušší, kdyby šlo SQL použít jako databázi. SLEČNA slibuje vestavěná podpora pouze v systému Windows Server 2019 nebo v sestavení Windows Server 1803. Načítání dat také pomocí poskytovatele OleDB nebude fungovatprotože DSC Server používá pojmenovaný parametr, který OleDbCommand plně nepodporuje.

Našel jsem tuto metodu: pro ty, kteří používají Windows Server 2012 a 2016, můžete настроить pomocí SQL databáze jako backendu pro dotazovací server DSC. K tomu vytvoříme „proxy“ ve formě souboru .mdb s přidruženými tabulkami, který přesměruje data přijatá z klientských reportů do databáze SQL serveru.

Poznámka: Pro Windows Server 2016 musíte použít AccessDatabaseEngine2016x86protože Microsoft.Jet.OLEDB.4.0 již není podporován.

Nebudu se podrobně rozepisovat o procesu nasazení DSC pull serveru, je velmi dobře popsán zde. Uvedu jen několik bodů. Pokud nasadíme DSC puller na stejný webový server s WSUS nebo Kaspersky Security Center, pak ve skriptu pro vytvoření konfigurace musíme změnit následující parametry:

  1. UseSecurityBestPractices     = $false

    V opačném případě bude TLS 1.0 zakázáno 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 tuto změnu neprovedete, nebudete moci spustit server AppPool DSC na IIS se službou WSUS.

  3. Při instalaci serveru DSC se službou WSUS deaktivujte statické a dynamické ukládání do mezipaměti pro web DSC.

Pojďme k nastavení DSC serveru pro použití SQL databáze.

Vytvoření SQL databáze

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

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  2. Vytvořme si účet pro připojení k této databázi. Nejprve zkontrolujte, zda SQL server umožňuje ověřování účtů Windows i SQL.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  3. Přejděte do sekce Mapování uživatelů. Vyberte databázi, v tomto případě DSC. Dáváme práva vlastníka databáze.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  4. Hotovo.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

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

Existují dva způsoby, jak vytvořit schéma pro databázi DSC:

  • nezávisle, prostřednictvím 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
  • importovat data z prázdných zařízení.mdb jako součást modulu PS PSDesiredStateConfiguration pomocí Průvodce importem dat SQL.

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

  1. Chcete-li importovat data, spusťte Průvodce importem a exportem serveru SQL Server.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  2. Zvolíme, odkud data získáme – v našem případě je to databáze Microsoft Access. Klepněte na tlačítko Další.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  3. Vyberte soubor, ze kterého diagram importujeme.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  4. Označujeme, kam importovat - pro nás je to SQL databáze.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  5. Vyberte SQL server (Název serveru) a databázi, do které budeme data importovat (DataBase).

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

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

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  7. Vybereme tabulky, ze kterých budeme importovat schéma databáze.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  8. Zaškrtněte políčko Spustit okamžitě a klikněte na Dokončit.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  9. Hotovo.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

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

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

Nastavení „proxy“ souboru .mdb

Vytvoření připojení ODBC k serveru SQL. Předpokládá se, že MS Access není nainstalován na serveru s DSC, takže nastavení databases.mdb se provádí na mezihostiteli s nainstalovaným MS Access.

Vytvořme systémové ODBC spojení s SQL serverem (bitita spojení musí odpovídat bitové bitové hodnotě MS Access - 64 nebo 32). Lze jej vytvořit pomocí:
- cmdlet Powershell:

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

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

  1. Otevřete Nástroje pro správu. Datové zdroje ODBC vybíráme v závislosti na verzi nainstalovaného MS Access. Přejděte na kartu Systémové DSN a vytvořte systémové připojení (Přidat).

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  2. Označujeme, že se připojíme k SQL serveru. Klepněte na tlačítko Dokončit.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  3. Zadejte název a server, ke kterému se chcete připojit. Poté bude nutné vytvořit spojení se stejnými parametry na serveru DSC.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  4. Označujeme, že pro připojení k SQL serveru používáme dříve vytvořené přihlášení s názvem DSC.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  5. Databázi specifikujeme v nastavení připojení DSC.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  6. Klepněte na tlačítko Dokončit.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  7. Před dokončením nastavení zkontrolujeme, zda připojení funguje (Test Data Source).

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  8. Hotovo.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

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

Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  1. Přejděte na kartu Externí data a klikněte na Databáze ODBC. V okně, které se zobrazí, vyberte Vytvořit propojenou tabulku pro připojení ke zdroji dat.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  2. V novém okně vyberte kartu Machine Data Source a klikněte na OK. V novém okně zadejte přihlašovací údaje pro připojení k serveru SQL.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  3. Vyberte tabulky, které je třeba propojit. Zaškrtněte políčko Uložit heslo a klepněte na OK. Uložte heslo pro všechny tři tabulky.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  4. V indexech musíte vybrat následující:
    — TargetName pro tabulku dbo_Devices;

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

    — NodeName nebo IPAddress pro dbo_RegistrationData;

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

    — NodeName nebo IPAddress pro dbo_StatusReport.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

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

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  6. Hotovo.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  7. Uložte soubor a zavřete MS Access. Nyní zkopírujeme výsledný soubor devices.mdb na server DSC (standardně v C: Program FilesWindowsPowershellDSCService) a nahradíme jím stávající (pokud existuje).

Konfigurace serveru DSC pro použití SQL

  1. Vrátíme se na server DSC. Chcete-li se připojit k serveru SQL pomocí našeho proxy souboru, vytvořte nové připojení ODBC na serveru DSC. Název, bitová hloubka a nastavení připojení musí být stejné jako při vytváření souboru MDB. Zde můžete zkopírovat již nakonfigurovaný prázdný soubor devices.mdb.
  2. Chcete-li použít devices.mdb, musíte provést změny v souboru web.config serveru pro stahování DSC (výchozí je C:inetpubPSDSCPullServerweb.config):

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

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

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

Kontrola funkčnosti serveru DSC

  1. Zkontrolujte, zda je server DSC přístupný prostřednictvím webového prohlížeče.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  2. Nyní zkontrolujeme, zda DSC pull server funguje správně. Za tímto účelem modul xPSDesiredStateConfiguration obsahuje skript pullserversetuptests.ps1. Před spuštěním tohoto skriptu musíte nainstalovat modul Powershell s názvem Pester. Nainstalujte jej Install-Module -Name Pester.
  3. Otevřete C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<verze modulu>DSCPullServerSetupPullServerDeploymentVerificationTest (v příkladu verze 8.0.0.0.0).

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  4. Otevřete PullServerSetupTests.ps1 a zkontrolujte cestu k web.config serveru DSC. Cesta k web.config, která bude skript kontrolovat, je zvýrazněna červeně. V případě potřeby tuto cestu změníme.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  5. Spusťte pullserversetuptests.ps1
    Invoke-Pester.PullServerSetupTests.ps1
    Все работает.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

  6. V SQL Management Studio vidíme, že administrovaní hostitelé odesílají reporty na reportovací server DSC a data končí v databázi DSC na SQL serveru.

    Konfigurace požadovaného stavu prostředí PowerShell a soubor: část 1. Konfigurace serveru DSC Pull Server pro práci s databází SQL

To je vše. V následujících článcích vám plánuji říci, jak vytvořit sestavy ze získaných dat, a dotknu se otázek odolnosti proti chybám a škálovatelnosti.

Zdroj: www.habr.com

Přidat komentář