
PowerShell қалаған күй конфигурациясы (DSC) жүздеген серверлер болған кезде амалдық жүйені, сервер рөлдерін және қолданбаларды орналастыру және теңшеу жұмысын айтарлықтай жеңілдетеді.
Бірақ DSC жергілікті пайдалану кезінде, яғни. MS Azure-де емес, бірнеше нюанстар бар. Олар әсіресе ұйым үлкен болса (300-ден астам жұмыс станциялары мен серверлері) және контейнерлер әлемін әлі ашпаған жағдайда байқалады:
- Жүйелердің күйі туралы толық есептер жоқ. Қажетті конфигурация кейбір серверлерде қолданылмаған болса, онда бұл есептерсіз біз бұл туралы білмейміз. Кірістірілген есеп беру серверінен ақпаратты алу өте қиын, ал көптеген хосттар үшін бұл ұзақ уақыт алуы мүмкін.
- Масштабтау және ақауларға төзімділік жоқ. Жалғыз қатеге төзімді дерекқоры және конфигурациялар, модульдер және тіркеу кілттері үшін mof файлдарының жалпы сақтау орны болатын DSC тарту веб-серверлерінің фермасын құру мүмкін емес.
Бүгін мен сізге бірінші мәселені қалай шешуге және есеп беру үшін деректерді алуға болатынын айтамын. Егер SQL дерекқор ретінде пайдаланылса, бәрі оңайырақ болар еді. ХАНЫМ Кірістірілген қолдау тек Windows Server 2019 жүйесінде немесе Windows сервері 1803 құрастыруда. Сондай-ақ OleDB провайдерін пайдаланып деректерді алу себебі DSC сервері OleDbCommand толық қолдау көрсетпейтін аталған параметрді пайдаланады.
Мен бұл әдісті таптым: Windows Server 2012 және 2016 пайдаланатындар үшін сіз жасай аласыз SQL дерекқорын DSC сұрау сервері үшін сервер ретінде пайдалану. Ол үшін клиент есептерінен алынған деректерді SQL серверінің дерекқорына қайта бағыттайтын байланысты кестелері бар .mdb файлы түрінде «прокси» жасаймыз.
Ескертпе: Windows Server 2016 үшін пайдалану керек себебі Microsoft.Jet.OLEDB.4.0 енді қолдау көрсетпейді.
Мен DSC тарту серверін қолдану процесі туралы егжей-тегжейлі айтпаймын, ол өте жақсы сипатталған . Мен бір-екі тармақты ғана атап өтейін. Егер біз DSC тартқышын WSUS немесе Kaspersky қауіпсіздік орталығымен бір веб-серверде орналастырсақ, конфигурацияны жасау сценарийінде келесі параметрлерді өзгерту керек:
UseSecurityBestPractices = $falseӘйтпесе, TLS 1.0 өшіріледі және SQL дерекқорына қосыла алмайсыз. Kaspersky Security Center да жұмыс істемейді (мәселе Kaspersky Security Center v11 жүйесінде шешілуі керек).
Enable32BitAppOnWin64 = $trueБұл өзгерісті жасамасаңыз, AppPool DSC серверін IIS жүйесінде WSUS көмегімен іске қоса алмайсыз.
- DSC серверін WSUS көмегімен орнатқан кезде, DSC сайты үшін статикалық және динамикалық кэштеуді өшіріңіз.
SQL дерекқорын пайдалану үшін DSC серверін орнатуға көшейік.
SQL деректер базасын құру
- DSC деп аталатын бос SQL дерекқорын жасайық.


- Осы дерекқорға қосылу үшін тіркелгі жасайық. Алдымен, SQL сервері Windows және SQL тіркелгілерінің түпнұсқалығын растауға мүмкіндік беретінін тексеріңіз.


- Пайдаланушыны салыстыру бөліміне өтіңіз. Дерекқорды таңдаңыз, бұл жағдайда DSC. Біз дерекқор иесінің құқықтарын береміз.

- Аяқталды.

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 - SQL деректерді импорттау шебері арқылы PSDesiredStateConfiguration PS модулінің бөлігі ретінде бос devices.mdb деректерін импорттау.
Біз жұмыс істейтін Devices.mdb файлы C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer ішінде орналасқан.
- Деректерді импорттау үшін SQL серверінің импорттау және экспорттау шеберін іске қосыңыз.

- Біз деректерді қайдан алатынымызды таңдаймыз - біздің жағдайда бұл Microsoft Access дерекқоры. Келесі түймесін басыңыз.

- Диаграмма импортталатын файлды таңдаңыз.

- Біз қайда импорттау керектігін көрсетеміз - біз үшін бұл SQL дерекқоры.

- SQL серверін (Сервер атауы) және деректерді импорттайтын дерекқорды (DataBase) таңдаңыз.

- Бір немесе бірнеше кестелерден немесе көріністерден деректерді көшіру (кестелерден немесе көріністерден деректерді көшіру) опциясын таңдаңыз.

- Біз дерекқор схемасын импорттайтын кестелерді таңдаймыз.

- Бірден іске қосу құсбелгісін қойып, «Аяқтау» түймесін басыңыз.

- Аяқталды.

- Нәтижесінде, кестелер DSC дерекқорында пайда болуы керек.

.mdb «прокси» файлын орнату
SQL серверіне ODBC қосылымын жасау. DSC жұмыс істейтін серверде MS Access орнатылмаған деп болжанады, сондықтан databases.mdb орнату MS Access орнатылған аралық хостта орындалады.
SQL серверіне жүйелік ODBC қосылымын құрайық (қосылу биті MS Access битіне сәйкес болуы керек - 64 немесе 32). Оны пайдалану арқылы жасауға болады:
- 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— немесе қосылым шеберін пайдаланып қолмен:
- Әкімшілік құралдарды ашыңыз. Орнатылған MS Access нұсқасына байланысты ODBC деректер көздерін таңдаймыз. Жүйенің DSN қойындысына өтіп, жүйе қосылымын жасаңыз (Қосу).

- Біз SQL серверіне қосылатынымызды көрсетеміз. Аяқтау түймесін басыңыз.

- Қосылатын атау мен серверді көрсетіңіз. Содан кейін DSC серверінде бірдей параметрлері бар қосылым жасау қажет болады.

- Біз SQL серверіне қосылу үшін DSC атымен бұрын жасалған логинді қолданатынымызды көрсетеміз.

- Біз DSC қосылым параметрлерінде дерекқорды көрсетеміз.

- Аяқтау түймесін басыңыз.

- Орнатуды аяқтамас бұрын, қосылымның жұмыс істеп тұрғанын тексереміз (Дерек көзін тексеру).

- Аяқталды.

MS Access-те devices.mdb деректер қорын құру. MS Access бағдарламасын іске қосып, devices.mdb деп аталатын бос дерекқорды жасаңыз.

- Сыртқы деректер қойындысына өтіп, ODBC дерекқорын басыңыз. Пайда болған терезеде деректер көзіне қосылу үшін Байланыстырылған кестені жасау пәрменін таңдаңыз.

- Жаңа терезеде Машина деректерінің көзі қойындысын таңдап, OK түймесін басыңыз. Жаңа терезеде SQL серверіне қосылу үшін тіркелгі деректерін енгізіңіз.

- Байланыстыру қажет кестелерді таңдаңыз. Құпия сөзді сақтау жолағын белгілеп, OK түймесін басыңыз. Барлық үш кесте үшін құпия сөзді әр уақытта сақтаңыз.

- Индекстерде келесілерді таңдау керек:
— dbo_Devices кестесіне арналған TargetName;
— dbo_RegistrationData үшін NodeName немесе IPAaddress;
— dbo_StatusReport үшін NodeName немесе IPAaddress.
- MS Access-те кестелердің атын өзгертейік, атап айтқанда: DSC оларды пайдалана алатындай етіп dbo_ префиксін алып тастаңыз.

- Аяқталды.

- Файлды сақтаңыз және MS Access бағдарламасын жабыңыз. Енді біз алынған devices.mdb файлын DSC серверіне көшіреміз (әдепкі бойынша C: Program FilesWindowsPowershellDSCService) және барын онымен ауыстырамыз (егер ол бар болса).
DSC серверін SQL пайдалану үшін теңшеу
- Біз DSC серверіне ораламыз. SQL серверіне прокси файлымызбен қосылу үшін DSC серверінде жаңа ODBC қосылымын жасайық. Аты, бит тереңдігі және қосылым параметрлері MDB файлын жасау кезіндегідей болуы керек. Конфигурацияланған бос devices.mdb файлын осы жерден көшіруге болады.
- devices.mdb пайдалану үшін DSC тарту серверінің web.config файлына өзгертулер енгізу қажет (әдепкі C:inetpubPSDSCPullServerweb.config):
- 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;">- 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;">Бұл DSC серверін орнатуды аяқтайды.
DSC серверінің функционалдығын тексеру
- DSC серверіне веб-шолғыш арқылы қол жеткізуге болатынын тексерейік.

- Енді DSC тарту серверінің дұрыс жұмыс істеп тұрғанын тексерейік. Бұл әрекетті орындау үшін, xPSDesiredStateConfiguration модулі pullserversetuptests.ps1 сценарийін қамтиды. Бұл сценарийді іске қоспас бұрын, Pester деп аталатын Powershell модулін орнату керек. Оны орнатыңыз Install-Module -Name Pester.
- C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<модуль нұсқасы>DSCPullServerSetupPullServerDeploymentVerificationTest ашыңыз (мысалда 8.0.0.0.0 нұсқасында).

- PullServerSetupTests.ps1 ашыңыз және DSC серверінің web.config жолын тексеріңіз. Скриптті тексеретін web.config жолы қызыл түспен белгіленген. Қажет болса, бұл жолды өзгертеміз.

- pullserversetuptests.ps1 іске қосыңыз
Invoke-Pester.PullServerSetupTests.ps1
Барлық жұмыс істейді.
- SQL Management Studio бағдарламасында біз басқарылатын хосттар есептерді DSC есеп беру серверіне жіберетінін және деректер SQL серверіндегі DSC дерекқорында аяқталатынын көреміз.

Бар болғаны. Келесі мақалаларда мен сізге алынған деректер бойынша есептерді қалай құру керектігін айтуды жоспарлап отырмын және ақауларға төзімділік пен масштабтауға қатысты мәселелерді қозғаймын.
Ақпарат көзі: www.habr.com





































