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 като база данни. обещава вградената поддръжка само в 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. Нажимаем Next.

    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-сервер (Server Name) и базу данных, куда будем импортировать данные (DataBase).

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

  6. Выбираем опцию Copy data from one or more tables or views (копирование данных из одной или нескольких таблиц или представлений).

    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

\n

— за Windows Server 2016

\n

На това настройката на 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