PowerShell Desired State Configuration (DSC) کار استقرار و پیکربندی سیستم عامل، نقش های سرور و برنامه های کاربردی را در زمانی که صدها سرور دارید، بسیار ساده می کند.
اما هنگام استفاده از DSC در محل، به عنوان مثال. نه در MS Azure، چند تفاوت ظریف وجود دارد. آنها به ویژه در صورتی قابل توجه هستند که سازمان بزرگ باشد (از 300 ایستگاه کاری و سرور) و هنوز دنیای کانتینرها را کشف نکرده باشد:
- هیچ گزارش کاملی در مورد وضعیت سیستم ها وجود ندارد. اگر پیکربندی مورد نیاز در برخی از سرورها اعمال نشده باشد، بدون این گزارش ها از آن اطلاعی نخواهیم داشت. به دست آوردن اطلاعات از سرور گزارش داخلی بسیار دشوار است و برای تعداد زیادی از هاست ها نیز ممکن است زمان زیادی طول بکشد.
- عدم مقیاس پذیری و تحمل خطا. ساختن مزرعه ای از وب سرورهای کششی DSC که دارای یک پایگاه داده مقاوم در برابر خطا و یک ذخیره سازی مشترک از فایل های mof برای پیکربندی ها، ماژول ها و کلیدهای ثبت باشند، غیرممکن است.
امروز به شما خواهم گفت که چگونه می توانید اولین مشکل را حل کنید و داده هایی را برای گزارش گیری دریافت کنید. اگر بتوان از SQL به عنوان پایگاه داده استفاده کرد، همه چیز ساده تر خواهد بود. اماس
من این روش را پیدا کردم: برای کسانی که از ویندوز سرور 2012 و 2016 استفاده می کنند، می توانید
توجه: برای ویندوز سرور 2016 باید استفاده کنید
من به جزئیات در مورد روند استقرار سرور کششی DSC نمی پردازم، بسیار خوب توضیح داده شده است
-
UseSecurityBestPractices = $false
در غیر این صورت، TLS 1.0 غیرفعال می شود و نمی توانید به پایگاه داده SQL متصل شوید. Kaspersky Security Center نیز کار نخواهد کرد (مشکل باید در Kaspersky Security Center v11 حل شود).
-
Enable32BitAppOnWin64 = $true
اگر این تغییر را انجام ندهید، نمی توانید سرور AppPool DSC را در IIS با WSUS اجرا کنید.
- هنگام نصب سرور DSC با WSUS، کش استاتیک و پویا را برای سایت DSC غیرفعال کنید.
بیایید به راه اندازی سرور DSC برای استفاده از پایگاه داده SQL ادامه دهیم.
ایجاد پایگاه داده SQL
- بیایید یک پایگاه داده SQL خالی با نام DSC ایجاد کنیم.
- بیایید یک حساب کاربری برای اتصال به این پایگاه داده ایجاد کنیم. ابتدا بررسی کنید که سرور SQL اجازه احراز هویت اکانت های Windows و SQL را می دهد.
- به قسمت User Mapping بروید. پایگاه داده، در این مورد 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
- وارد کردن داده ها از devices.mdb خالی به عنوان بخشی از ماژول PS PSDesiredStateConfiguration از طریق SQL Data Import Wizard.
Devices.mdb که با آن کار خواهیم کرد در C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer قرار دارد.
- برای وارد کردن داده ها، SQL Server Import and Export Wizard را اجرا کنید.
- ما انتخاب می کنیم که داده ها را از کجا دریافت کنیم - در مورد ما این یک پایگاه داده Microsoft Access است. روی Next کلیک کنید.
- فایلی را که نمودار را از آن وارد می کنیم انتخاب کنید.
- ما نشان می دهیم که کجا باید وارد شود - برای ما این یک پایگاه داده SQL است.
- سرور SQL (نام سرور) و پایگاه داده ای که داده ها را به آن وارد می کنیم (DataBase) را انتخاب کنید.
- گزینه Copy data from one or more tables or view (کپی داده از جداول یا نماها) را انتخاب کنید.
- جداول را انتخاب می کنیم که از آنها طرح پایگاه داده را وارد می کنیم.
- چک باکس Run Immediately را علامت بزنید و روی Finish کلیک کنید.
- انجام شد
- در نتیجه جداول باید در پایگاه داده DSC ظاهر شوند.
راه اندازی یک فایل «پراکسی» .mdb
ایجاد یک اتصال ODBC به یک سرور SQL. فرض بر این است که MS Access بر روی سرور در حال اجرا DSC نصب نشده است، بنابراین راه اندازی databases.mdb روی یک میزبان میانی با نصب MS Access انجام می شود.
بیایید یک اتصال ODBC سیستم به سرور SQL ایجاد کنیم (بیت اتصال باید با بیت MS Access - 64 یا 32 مطابقت داشته باشد). می توان آن را با استفاده از:
- 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
- یا به صورت دستی، با استفاده از جادوگر اتصال:
- ابزارهای Administrative را باز کنید. ما منابع داده ODBC را بسته به نسخه MS Access نصب شده انتخاب می کنیم. به تب System DSN رفته و یک اتصال سیستم (Add) ایجاد کنید.
- ما نشان می دهیم که به سرور SQL متصل خواهیم شد. روی Finish کلیک کنید.
- نام و سرور را برای اتصال مشخص کنید. سپس یک اتصال با همان پارامترها باید در سرور DSC ایجاد شود.
- نشان میدهیم که برای اتصال به سرور SQL، از یک لاگینی که قبلا ایجاد شده با نام DSC استفاده میکنیم.
- ما پایگاه داده را در تنظیمات اتصال DSC مشخص می کنیم.
- روی Finish کلیک کنید.
- قبل از تکمیل تنظیمات، بررسی می کنیم که اتصال کار می کند (Test Data Source).
- انجام شد
ایجاد پایگاه داده devices.mdb در MS Access. MS Access را راه اندازی کنید و یک پایگاه داده خالی به نام devices.mdb ایجاد کنید.
- به تب External Data رفته و روی ODBC Database کلیک کنید. در پنجره ظاهر شده، Create a linked table را برای اتصال به منبع داده انتخاب کنید.
- در پنجره جدید، تب Machine Data Source را انتخاب کرده و OK کنید. در پنجره جدید، اطلاعات کاربری را برای اتصال به سرور SQL وارد کنید.
- جداولی را که باید پیوند داده شوند انتخاب کنید. کادر Save password را علامت بزنید و OK کنید. رمز عبور را هر بار برای هر سه جدول ذخیره کنید.
- در ایندکس ها باید موارد زیر را انتخاب کنید:
- TargetName برای جدول dbo_Devices؛
- NodeName یا آدرس IP برای dbo_RegistrationData؛
- NodeName یا آدرس IP برای dbo_StatusReport. - بیایید نام جداول را در MS Access تغییر دهیم، یعنی: پیشوند dbo_ را حذف کنید تا DSC بتواند از آنها استفاده کند.
- انجام شد
- فایل را ذخیره کنید و MS Access را ببندید. اکنون دستگاه های بدست آمده را در سرور DSC کپی می کنیم (به طور پیش فرض در C: Program FilesWindowsPowershellDSCService) و موجود را با آن جایگزین می کنیم (در صورت وجود).
پیکربندی سرور DSC برای استفاده از SQL
- به سرور DSC برمی گردیم. برای اتصال به سرور SQL با فایل پراکسی خود، اجازه دهید یک اتصال ODBC جدید در سرور DSC ایجاد کنیم. نام، عمق بیت و تنظیمات اتصال باید مانند هنگام ایجاد فایل MDB باشد. میتوانید دستگاههای خالی پیکربندی شده قبلی را از اینجا کپی کنید.
- برای استفاده از devices.mdb، باید تغییراتی در web.config سرور کششی DSC ایجاد کنید (پیشفرض C:inetpubPSDSCPullServerweb.config است):
- برای ویندوز سرور 2012
<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">
- برای ویندوز سرور 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 است. قبل از اجرای این اسکریپت، باید یک ماژول Powershell به نام Pester را نصب کنید. آن را نصب کنید Install-Module -Name Pester.
- C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<نسخه ماژول>DSCPullServerSetupPullServerDeploymentVerificationTest را باز کنید (در نمونه نسخه 8.0.0.0.0).
- PullServerSetupTests.ps1 را باز کنید و مسیر web.config سرور DSC را بررسی کنید. مسیر web.config که اسکریپت را بررسی می کند، با رنگ قرمز مشخص شده است. اگر لازم باشد این مسیر را تغییر می دهیم.
- pullserversetuptests.ps1 را اجرا کنید
Invoke-Pester.PullServerSetupTests.ps1
همه کار می کند - در SQL Management Studio می بینیم که هاست های مدیریت شده گزارش ها را به سرور گزارش دهی DSC ارسال می کنند و داده ها به پایگاه داده DSC در سرور SQL ختم می شوند.
همین. در مقالات بعدی قصد دارم به شما بگویم که چگونه بر روی داده های به دست آمده گزارش بسازید و به مسائل مربوط به تحمل خطا و مقیاس پذیری خواهم پرداخت.
منبع: www.habr.com