PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

PowerShell Desired State Configuration (DSC) значително улеснява разгръщането и конфигурирането на операционната система, сървърните роли и приложения, когато разполагате със стотици сървъри.

Но при използване на DSC on-premises, т.е. не в MS Azure, се появяват няколко нюанса. Те са особено осезаеми, когато организацията е голяма (от 300 работни станции и сървъри) и все още не е открила света на контейнерите:

  • Липсват пълни отчети за състоянието на системите. Ако необходимата конфигурация не е приложена на определени сървъри, без тези отчети, ние няма да разберем. Получаването на информация от вградения отчетен сървър е доста трудно, а за голям брой хостове – и дълго.
  • Липсва мащабируемост и отказоустойчивост. Невъзможно е да се изгради ферма от опрашващи уеб сървъри DSC, които да имат единна отказоустойчива база данни и общо хранилище на mof файлове с конфигурации, модули и регистрационни ключове.

Днес ще разкажа как може да се реши първият проблем и как да получите данни за изграждане на отчети. Всичко щеше да е по-просто, ако като база данни можехме да използваме SQL. MS обещава вградена поддръжка само в Windows Server 2019 или в build Windows Server 1803. Извличането на данни с помощта на OleDB provider също не е възможно, тъй като DSC-серверът използва именуван параметър, който не се поддържа напълно от OleDbCommand.

Намерих следния начин: онези, които използват Windows Server 2012 и 2016, могат да настроят използването на SQL БД като backend за опрашващия DSC-сървър. За това ще създадем 'прокси' под формата на .mdb файл с взаимосвързани таблици, който ще пренасочва данни, получени от клиентските отчети, в SQL базата данни.

Забележка: за Windows Server 2016 е необходимо да се използва AccessDatabaseEngine2016x86, тъй като Microsoft.Jet.OLEDB.4.0 вече не се поддържа.

Няма да се спирам подробно на процеса на разгръщане на опрашващия DSC-сървър, той е много добре описан тук. Ще подчертая само няколко момента. Ако разгръщаме опрашващ DSC на един уеб сървър с WSUS или Kaspersky Security Center, то в скрипта за създаване на конфигурация е необходимо да променим следните параметри:

  1. UseSecurityBestPractices     = $false

    В противном случае TLS 1.0 будет отключен, и вы не сможете подключиться к БД SQL. Kaspersky Security Center также не будет функционировать (проблема должна быть исправлена в версии Kaspersky Security Center v11).

  2. Enable32BitAppOnWin64 = $true

    Если это изменение не внести, запустить AppPool DSC-сервера на IIS со WSUS будет невозможно.

  3. При установке DSC-сервера вместе с WSUS отключите статическое и динамическое кэширование для сайта DSC.

Перейдем к настройке сервера DSC для работы с БД SQL.

Создание БД SQL

  1. Создадим пустую базу данных SQL с именем DSC.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  2. Создадим учетную запись для подключения к этой базе данных. Сначала убедитесь, что на SQL-сервере разрешена аутентификация как Windows, так и SQL.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  3. Переходим в раздел User Mapping. Выбираем базу данных – в данном случае это DSC. Предоставляем права владельца базы данных.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  4. Готово.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

Создание схемы для базы данных DSC

Создать схему для базы данных DSC можно двумя способами:

  • самостоятельно, через 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
  • импортировать данные из пустого devices.mdb в составе PS-модуля PSDesiredStateConfiguration через Мастера импорта данных SQL.

    Devices.mdb, с которым мы будем работать, находится по адресу C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.

  1. Для импорта данных запускаем SQL Server Import and Export Wizard.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  2. Выбираем источник данных – в нашем случае это база данных Microsoft Access. Нажимаем Далее.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  3. Выбираем файл, из которого будем импортировать схему.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  4. Указываем, куда будем импортировать – это БД SQL.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  5. Выбираем SQL-сервер (Имя сервера) и базу данных, в которую будем импортировать данные (База данных).

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  6. Выбираем опцию Копировать данные из одной или нескольких таблиц или представлений.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  7. Избираме таблиците, от които ще импортираме схемата на БД.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  8. Поставяме отметка "Run Immediately" и натискаме "Finish".

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  9. Готово.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  10. В резултат на това в БД DSC трябва да се появят таблици.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

Настройка на .mdb "прокси" файл

Създаване на ODBC връзка с SQL сървър. Предполага се, че MS Access не е инсталиран на сървъра с DSC, затова настройката на databases.mdb се извършва на междинен хост с инсталиран MS Access.

Създаваме системна ODBC връзка с SQL сървър (разрядността на връзката трябва да съответства на разрядността на MS Access – 64 или 32). Може да се създаде чрез:
— командлета PowerShell:

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

— или ръчно, чрез помощника за връзки:

  1. Отваряме Administrative tools. Избираме източници на данни ODBC в зависимост от версията на инсталирания MS Access. Преминаваме на таба System DSN и създаваме системна връзка (Add).

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  2. Установяваме, че ще се свързваме с SQL сървър. Натискаме "Finish".

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  3. Посочваме име и сървър за свързването. След това връзката с такива параметри трябва да бъде създадена и на сървера DSC.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  4. Установяваме, че за свързването със SQL сървъра се използва предварително създадения от нас акаунт с име DSC.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  5. Посочваме БД в настройките за свързване с DSC.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  6. Натискаме "Finish".

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  7. Преди да завършим настройката, проверяваме дали връзката работи (Test Data Source).

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  8. Готово.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

Създаване на база данни devices.mdb в MS Access. Стартираме MS Access и създаваме празна база данни с името devices.mdb.

PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  1. Преминаваме на таба Външни данни, кликваме на База данни ODBC. В появилото се прозорче избираме Създаване на свързана таблица за връзка с източника на данни.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  2. В новия прозорец избираме таба Machine Data Source и натискаме ОК. В новия прозорец въвеждаме данните за вход за свързване с SQL сървъра.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  3. Избираме таблиците, които е необходимо да свържем. Отбелязваме опцията "Съхрани паролата" и натискаме ОК. Паролата трябва да се съхранява всеки път за всичките три таблици.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  4. В индексите трябва да изберем следните:
    — TargetName за таблицата dbo_Devices;

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

    — NodeName или IPAddress за dbo_RegistrationData;

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

    — NodeName или IPAddress за dbo_StatusReport.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  5. Преименуваме таблиците в MS Access, а именно: премахваме префикса dbo_, за да могат да бъдат използвани от DSC.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  6. Готово.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  7. Запазваме файла и затваряме MS Access. Сега копираме получения devices.mdb на сървера DSC (по подразбиране в C:Program FilesWindowsPowershellDSCService) и заменяме съществуващия (ако такъв има).

Настройка на DSC-сървър за използване на SQL

  1. Връщаме се към DSC-сървъра. За да се свържем с SQL-сървъра с нашия proxy файл, ще създадем ново ODBC свързване на DSC-сървъра. Името, разрядността и настройките на свързването трябва да са същите като при създаването на MDB файла. Може да копирате вече настроения празен devices.mdb оттук.
  2. За да използвате devices.mdb, трябва да направите промени в web.config на опрашващия сървър DSC (по подразбиране – C:inetpubPSDSCPullServerweb.config):

— за Windows Server 2012

— за Windows Server 2016

С това настройката на DSC-сървъра е завършена.

Проверка за работоспособност на DSC-сървъра

  1. Нека проверим дали DSC-сървърът е достъпен през уеб браузър.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  2. Сега ще проверим дали опрашващият сървър DSC работи правилно. За целта в модула xPSDesiredStateConfiguration има скрипт pullserversetuptests.ps1. Преди да стартирате този скрипт, е необходимо да инсталирате модула Powershell с името Pester. Инсталирайте го с Install-Module -Name Pester.
  3. Отваряме C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfigurationDSCPullServerSetupPullServerDeploymentVerificationTest (в примера версия 8.0.0.0.0).

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  4. Отваряме PullServerSetupTests.ps1 и проверяваме пътя към web.config на DSC-сървъра. С червено съм подчертавал пътя към web.config, който ще проверява скриптът. Ако е необходимо, променяме този път.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  5. Стартираме pullserversetuptests.ps1
    Invoke-Pester .PullServerSetupTests.ps1
    Всичко работи.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

  6. В SQL Management Studio виждаме, че администрираните хостове изпращат отчети на сървъра за отчети DSC и данните постъпват в базата данни DSC на SQL-сървъра.

    PowerShell Desired State Configuration и напильник: част 1. Настройка на DSC Pull Server за работа с база данни SQL

С това всичко свършва. В следващите статии планирам да разкажа как да изградим отчети на база получените данни и ще засегна въпросите за устойчивост на откази и мащабируемост.

Източник: habr.com

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster