
PowerShell Desired State Configuration (DSC) մեծապես հեշտացնում է օպերացիոն համակարգի, սերվերի դերերի և հավելվածների տեղակայման և կազմաձևման աշխատանքը, երբ դուք ունեք հարյուրավոր սերվերներ:
Բայց երբ օգտագործում եք DSC-ի ներսում, այսինքն. MS Azure-ում չէ, մի երկու նրբերանգ կա. Դրանք հատկապես նկատելի են, եթե կազմակերպությունը մեծ է (300 աշխատանքային կայաններից և սերվերներից) և դեռ չի հայտնաբերել բեռնարկղերի աշխարհը.
- Համակարգերի կարգավիճակի վերաբերյալ ամբողջական հաշվետվություններ չկան: Եթե որոշ սերվերների վրա անհրաժեշտ կոնֆիգուրացիան չի կիրառվել, ապա առանց այդ հաշվետվությունների մենք չենք իմանա այդ մասին: Ներկառուցված հաշվետվական սերվերից տեղեկատվություն ստանալը բավականին դժվար է, իսկ մեծ թվով հոսթների համար դա նույնպես կարող է երկար ժամանակ պահանջել։
- Բացակայում է մասշտաբայնությունը և սխալների հանդուրժողականությունը: Անհնար է կառուցել DSC pull վեբ սերվերների ֆերմա, որը կունենա մեկ անսարքության հանդուրժող տվյալների բազա և ընդհանուր պահոց mof ֆայլերի կոնֆիգուրացիաների, մոդուլների և գրանցման բանալիների համար:
Այսօր ես ձեզ կասեմ, թե ինչպես կարող եք լուծել առաջին խնդիրը և ստանալ տվյալներ հաշվետվության համար: Ամեն ինչ ավելի պարզ կլիներ, եթե SQL-ն օգտագործվեր որպես տվյալների բազա։ MS встроенную поддержку только в Windows Server 2019 или в build Windows server 1803. Забирать данные с использованием OleDB provider тоже քանի որ DSC սերվերն օգտագործում է անվանված պարամետր, որն ամբողջությամբ չի աջակցվում OleDbCommand-ի կողմից:
Нашел вот такой способ: тем, кто использует Windows Server 2012 и 2016, можно օգտագործելով SQL տվյալների բազան որպես DSC հարցումների սերվերի հետին պլան: Դա անելու համար մենք կստեղծենք «proxy» .mdb ֆայլի տեսքով՝ կապված աղյուսակներով, որը հաճախորդների հաշվետվություններից ստացված տվյալները կվերահղորդի դեպի SQL սերվերի տվյալների բազա։
Примечание: для Windows Server 2016 необходимо использовать քանի որ Microsoft.Jet.OLEDB.4.0-ն այլևս չի աջակցվում:
Ես չեմ մանրամասնի DSC ձգողական սերվերի տեղակայման գործընթացի մասին, այն շատ լավ նկարագրված է . Ընդամենը նշեմ մի քանի կետ. Եթե մենք տեղադրենք DSC puller-ը նույն վեբ սերվերի վրա WSUS կամ Kaspersky Security Center-ի հետ, ապա կազմաձևման ստեղծման սցենարում մենք պետք է փոխենք հետևյալ պարամետրերը.
UseSecurityBestPractices = $falseՀակառակ դեպքում, TLS 1.0-ը կանջատվի, և դուք չեք կարողանա միանալ SQL տվյալների բազային: Kaspersky Security Center-ը նույնպես չի աշխատի (խնդիրը պետք է լուծվի Kaspersky Security Center v11-ում):
Enable32BitAppOnWin64 = $trueԵթե այս փոփոխությունը չկատարեք, դուք չեք կարողանա գործարկել AppPool DSC սերվերը IIS-ում WSUS-ով:
- WSUS-ով DSC սերվերը տեղադրելիս անջատեք ստատիկ և դինամիկ քեշավորումը DSC կայքի համար:
Եկեք անցնենք DSC սերվերի տեղադրմանը SQL տվյալների բազան օգտագործելու համար:
SQL տվյալների բազայի ստեղծում
- Եկեք ստեղծենք դատարկ SQL տվյալների բազա DSC անունով:


- Создадим учетную запись для подключения к этой базе данных. Предварительно проверьте, что на 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 - ներմուծել տվյալները դատարկ սարքերից.mdb-ից որպես PS մոդուլի PSDesiredStateConfiguration-ի մաս SQL Data Import Wizard-ի միջոցով:
Devices.mdb, с которым мы будем работать, находится в C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.
- Տվյալներ ներմուծելու համար գործարկեք SQL Server Import and Export Wizard-ը:

- Մենք ընտրում ենք, թե որտեղից կստանանք տվյալները. մեր դեպքում դա Microsoft Access տվյալների բազա է: Սեղմեք Հաջորդը:

- Ընտրեք այն ֆայլը, որից ներմուծում ենք դիագրամը:

- Մենք նշում ենք, թե որտեղ պետք է ներմուծել. մեզ համար դա SQL տվյալների բազա է:

- Ընտրեք SQL սերվերը (Server Name) և տվյալների բազան, որտեղ մենք ներմուծելու ենք տվյալները (DataBase):

- Ընտրեք տարբերակը Պատճենել տվյալները մեկ կամ մի քանի աղյուսակներից կամ դիտումներից (տվյալների պատճենում աղյուսակներից կամ դիտումներից):

- Մենք ընտրում ենք աղյուսակները, որոնցից ներմուծելու ենք տվյալների բազայի սխեման։

- Ստուգեք «Անմիջապես գործարկել» վանդակը և սեղմեք «Ավարտել»:

- Կատարված:

- Արդյունքում աղյուսակները պետք է հայտնվեն DSC տվյալների բազայում:

.mdb «proxy» ֆայլի կարգավորում
SQL սերվերի հետ ODBC կապի ստեղծում: Ենթադրվում է, որ MS Access-ը տեղադրված չէ DSC-ով աշխատող սերվերի վրա, ուստի databases.mdb-ի կարգավորումը կատարվում է միջանկյալ հոսթի վրա՝ տեղադրված MS Access:
Եկեք ստեղծենք համակարգի ODBC միացում SQL սերվերին (միացման բիտությունը պետք է համապատասխանի MS Access բիթին՝ 64 կամ 32): Այն կարող է ստեղծվել՝ օգտագործելով.
- Powershell cmdlet:
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— կամ ձեռքով, օգտագործելով կապի հրաշագործը.
- Բացեք վարչական գործիքները: Մենք ընտրում ենք ODBC տվյալների աղբյուրներ՝ կախված տեղադրված MS Access-ի տարբերակից: Գնացեք System DSN ներդիր և ստեղծեք համակարգային կապ (Ավելացնել):

- Մենք նշում ենք, որ մենք միանալու ենք SQL սերվերին: Սեղմեք Ավարտել:

- Նշեք անունը և սերվերը, որոնց միանալու համար: Այնուհետև նույն պարամետրերով կապը պետք է ստեղծվի DSC սերվերի վրա:

- Մենք նշում ենք, որ SQL սերվերին միանալու համար մենք օգտագործում ենք նախկինում ստեղծված մուտք՝ DSC անունով։

- Մենք նշում ենք տվյալների բազան DSC կապի կարգավորումներում:

- Սեղմեք Ավարտել:

- Նախքան կարգավորումն ավարտելը, մենք ստուգում ենք, որ կապն աշխատում է (Test Data Source):

- Կատարված:

MS Access-ում devices.mdb տվյալների բազայի ստեղծում: Գործարկեք MS Access-ը և ստեղծեք դատարկ տվյալների բազա, որը կոչվում է devices.mdb:

- Գնացեք արտաքին տվյալների ներդիր և սեղմեք ODBC տվյալների բազա: Բացվող պատուհանում ընտրեք Ստեղծել կապակցված աղյուսակ՝ տվյալների աղբյուրին միանալու համար:

- Նոր պատուհանում ընտրեք «Մեքենայի տվյալների աղբյուր» ներդիրը և սեղմեք «OK»: Նոր պատուհանում մուտքագրեք հավատարմագրերը SQL սերվերին միանալու համար:

- Ընտրեք այն աղյուսակները, որոնք պետք է կապված լինեն: Ստուգեք «Պահպանել գաղտնաբառը» վանդակը և սեղմեք «OK»: Պահպանեք գաղտնաբառը ամեն անգամ բոլոր երեք աղյուսակների համար:

- Ինդեքսներում դուք պետք է ընտրեք հետևյալը.
— TargetName dbo_Devices աղյուսակի համար;
— NodeName կամ IPA հասցե dbo_RegistrationData-ի համար;
— NodeName կամ IPA հասցե dbo_StatusReport-ի համար:
- Եկեք վերանվանենք MS Access-ի աղյուսակները, այն է՝ հեռացնել dbo_ նախածանցը, որպեսզի DSC-ն կարողանա օգտագործել դրանք:

- Կատարված:

- Сохраняем файл и закрываем MS Access. Теперь копируем полученный devices.mdb на DSC-сервер (по умолчанию в C:Program FilesWindowsPowershellDSCService) и заменяем им существующий (если он есть).
DSC սերվերի կարգավորում SQL-ն օգտագործելու համար
- Մենք վերադառնում ենք DSC սերվեր: SQL սերվերին մեր պրոքսի ֆայլով միանալու համար եկեք ստեղծենք նոր ODBC կապ DSC սերվերի վրա: Անունը, բիթերի խորությունը և կապի կարգավորումները պետք է լինեն նույնը, ինչ MDB ֆայլը ստեղծելիս: Այստեղից կարող եք պատճենել արդեն կազմաձևված դատարկ սարքերը.mdb:
- Devices.mdb-ն օգտագործելու համար դուք պետք է փոփոխություններ կատարեք DSC pull server-ի 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 pull server-ը ճիշտ է աշխատում: Դա անելու համար xPSDesiredStateConfiguration մոդուլը ներառում է pullserversetuptests.ps1 սկրիպտը: Նախքան այս սցենարը գործարկելը, դուք պետք է տեղադրեք Powershell մոդուլ, որը կոչվում է Pester: Տեղադրեք այն 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 տվյալների բազայում:

Այսքանը: Հետևյալ հոդվածներում ես նախատեսում եմ պատմել ձեզ, թե ինչպես կարելի է հաշվետվություններ կազմել ստացված տվյալների վրա, և ես կանդրադառնամ սխալների հանդուրժողականության և մասշտաբայնության հարցերին:
Source: www.habr.com





































