پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

PowerShell Desired State Configuration (DSC) کار استقرار و پیکربندی سیستم عامل، نقش های سرور و برنامه های کاربردی را در زمانی که صدها سرور دارید، بسیار ساده می کند.

اما هنگام استفاده از DSC در محل، به عنوان مثال. نه در MS Azure، چند تفاوت ظریف وجود دارد. آنها به ویژه در صورتی قابل توجه هستند که سازمان بزرگ باشد (از 300 ایستگاه کاری و سرور) و هنوز دنیای کانتینرها را کشف نکرده باشد:

  • هیچ گزارش کاملی در مورد وضعیت سیستم ها وجود ندارد. اگر پیکربندی مورد نیاز در برخی از سرورها اعمال نشده باشد، بدون این گزارش ها از آن اطلاعی نخواهیم داشت. به دست آوردن اطلاعات از سرور گزارش داخلی بسیار دشوار است و برای تعداد زیادی از هاست ها نیز ممکن است زمان زیادی طول بکشد.
  • عدم مقیاس پذیری و تحمل خطا. ساختن مزرعه ای از وب سرورهای کششی DSC که دارای یک پایگاه داده مقاوم در برابر خطا و یک ذخیره سازی مشترک از فایل های mof برای پیکربندی ها، ماژول ها و کلیدهای ثبت باشند، غیرممکن است.

امروز به شما خواهم گفت که چگونه می توانید اولین مشکل را حل کنید و داده هایی را برای گزارش گیری دریافت کنید. اگر بتوان از SQL به عنوان پایگاه داده استفاده کرد، همه چیز ساده تر خواهد بود. ام‌اس وعده ها پشتیبانی داخلی فقط در Windows Server 2019 یا در Build Windows Server 1803. داده ها را با استفاده از ارائه دهنده OleDB نیز واکشی کنید کار نخواهد کردزیرا سرور DSC از یک پارامتر نامگذاری شده استفاده می کند که به طور کامل توسط OleDbCommand پشتیبانی نمی شود.

من این روش را پیدا کردم: برای کسانی که از ویندوز سرور 2012 و 2016 استفاده می کنند، می توانید راه اندازی با استفاده از پایگاه داده SQL به عنوان پشتیبان برای سرور پرس و جو DSC. برای انجام این کار، یک "پراکسی" در قالب یک فایل mdb. با جداول مرتبط ایجاد می کنیم که داده های دریافتی از گزارش های مشتری را به پایگاه داده سرور SQL هدایت می کند.

توجه: برای ویندوز سرور 2016 باید استفاده کنید AccessDatabaseEngine2016x86زیرا Microsoft.Jet.OLEDB.4.0 دیگر پشتیبانی نمی شود.

من به جزئیات در مورد روند استقرار سرور کششی DSC نمی پردازم، بسیار خوب توضیح داده شده است اینجا. من فقط به چند نکته اشاره می کنم. اگر DSC puller را در همان وب سرور با 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: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  2. بیایید یک حساب کاربری برای اتصال به این پایگاه داده ایجاد کنیم. ابتدا بررسی کنید که سرور SQL اجازه احراز هویت اکانت های Windows و SQL را می دهد.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  3. به قسمت User Mapping بروید. پایگاه داده، در این مورد DSC را انتخاب کنید. ما حقوق مالک پایگاه داده را می دهیم.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  4. انجام شد

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 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 Data Import Wizard.

    Devices.mdb که با آن کار خواهیم کرد در C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer قرار دارد.

  1. برای وارد کردن داده ها، SQL Server Import and Export Wizard را اجرا کنید.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  2. ما انتخاب می کنیم که داده ها را از کجا دریافت کنیم - در مورد ما این یک پایگاه داده Microsoft Access است. روی Next کلیک کنید.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  3. فایلی را که نمودار را از آن وارد می کنیم انتخاب کنید.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  4. ما نشان می دهیم که کجا باید وارد شود - برای ما این یک پایگاه داده SQL است.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  5. سرور SQL (نام سرور) و پایگاه داده ای که داده ها را به آن وارد می کنیم (DataBase) را انتخاب کنید.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  6. گزینه Copy data from one or more tables or view (کپی داده از جداول یا نماها) را انتخاب کنید.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  7. جداول را انتخاب می کنیم که از آنها طرح پایگاه داده را وارد می کنیم.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  8. چک باکس Run Immediately را علامت بزنید و روی Finish کلیک کنید.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  9. انجام شد

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  10. در نتیجه جداول باید در پایگاه داده DSC ظاهر شوند.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

راه اندازی یک فایل «پراکسی» .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

- یا به صورت دستی، با استفاده از جادوگر اتصال:

  1. ابزارهای Administrative را باز کنید. ما منابع داده ODBC را بسته به نسخه MS Access نصب شده انتخاب می کنیم. به تب System DSN رفته و یک اتصال سیستم (Add) ایجاد کنید.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  2. ما نشان می دهیم که به سرور SQL متصل خواهیم شد. روی Finish کلیک کنید.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  3. نام و سرور را برای اتصال مشخص کنید. سپس یک اتصال با همان پارامترها باید در سرور DSC ایجاد شود.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  4. نشان می‌دهیم که برای اتصال به سرور SQL، از یک لاگینی که قبلا ایجاد شده با نام DSC استفاده می‌کنیم.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  5. ما پایگاه داده را در تنظیمات اتصال DSC مشخص می کنیم.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  6. روی Finish کلیک کنید.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  7. قبل از تکمیل تنظیمات، بررسی می کنیم که اتصال کار می کند (Test Data Source).

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  8. انجام شد

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

ایجاد پایگاه داده devices.mdb در MS Access. MS Access را راه اندازی کنید و یک پایگاه داده خالی به نام devices.mdb ایجاد کنید.

پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  1. به تب External Data رفته و روی ODBC Database کلیک کنید. در پنجره ظاهر شده، Create a linked table را برای اتصال به منبع داده انتخاب کنید.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  2. در پنجره جدید، تب Machine Data Source را انتخاب کرده و OK کنید. در پنجره جدید، اطلاعات کاربری را برای اتصال به سرور SQL وارد کنید.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  3. جداولی را که باید پیوند داده شوند انتخاب کنید. کادر Save password را علامت بزنید و OK کنید. رمز عبور را هر بار برای هر سه جدول ذخیره کنید.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  4. در ایندکس ها باید موارد زیر را انتخاب کنید:
    - TargetName برای جدول dbo_Devices؛

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

    - NodeName یا آدرس IP برای dbo_RegistrationData؛

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

    - NodeName یا آدرس IP برای dbo_StatusReport.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  5. بیایید نام جداول را در MS Access تغییر دهیم، یعنی: پیشوند dbo_ را حذف کنید تا DSC بتواند از آنها استفاده کند.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  6. انجام شد

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  7. فایل را ذخیره کنید و MS Access را ببندید. اکنون دستگاه های بدست آمده را در سرور DSC کپی می کنیم (به طور پیش فرض در C: Program FilesWindowsPowershellDSCService) و موجود را با آن جایگزین می کنیم (در صورت وجود).

پیکربندی سرور DSC برای استفاده از SQL

  1. به سرور DSC برمی گردیم. برای اتصال به سرور SQL با فایل پراکسی خود، اجازه دهید یک اتصال ODBC جدید در سرور DSC ایجاد کنیم. نام، عمق بیت و تنظیمات اتصال باید مانند هنگام ایجاد فایل MDB باشد. می‌توانید دستگاه‌های خالی پیکربندی شده قبلی را از اینجا کپی کنید.
  2. برای استفاده از 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

  1. بیایید بررسی کنیم که سرور DSC از طریق یک مرورگر وب قابل دسترسی است.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  2. حالا بیایید بررسی کنیم که آیا سرور کششی DSC به درستی کار می کند یا خیر. برای انجام این کار، ماژول xPSDesiredStateConfiguration شامل اسکریپت pullserversetuptests.ps1 است. قبل از اجرای این اسکریپت، باید یک ماژول Powershell به نام Pester را نصب کنید. آن را نصب کنید Install-Module -Name Pester.
  3. C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<نسخه ماژول>DSCPullServerSetupPullServerDeploymentVerificationTest را باز کنید (در نمونه نسخه 8.0.0.0.0).

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  4. PullServerSetupTests.ps1 را باز کنید و مسیر web.config سرور DSC را بررسی کنید. مسیر web.config که اسکریپت را بررسی می کند، با رنگ قرمز مشخص شده است. اگر لازم باشد این مسیر را تغییر می دهیم.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  5. pullserversetuptests.ps1 را اجرا کنید
    Invoke-Pester.PullServerSetupTests.ps1
    همه کار می کند

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

  6. در SQL Management Studio می بینیم که هاست های مدیریت شده گزارش ها را به سرور گزارش دهی DSC ارسال می کنند و داده ها به پایگاه داده DSC در سرور SQL ختم می شوند.

    پیکربندی و فایل حالت مطلوب PowerShell: قسمت 1. پیکربندی DSC Pull Server برای کار با پایگاه داده SQL

همین. در مقالات بعدی قصد دارم به شما بگویم که چگونه بر روی داده های به دست آمده گزارش بسازید و به مسائل مربوط به تحمل خطا و مقیاس پذیری خواهم پرداخت.

منبع: www.habr.com

اضافه کردن نظر