تكوين الحالة المرغوبة في PowerShell والملف: الجزء 1. تكوين DSC Pull Server للعمل مع قاعدة بيانات SQL

تكوين الحالة المرغوبة في PowerShell والملف: الجزء 1. تكوين DSC Pull Server للعمل مع قاعدة بيانات SQL

يعمل PowerShell Desired State Configuration (DSC) على تبسيط مهمة نشر وتكوين نظام التشغيل وأدوار الخادم والتطبيقات بشكل كبير عندما يكون لديك مئات الخوادم.

ولكن عند استخدام DSC محليًا، على سبيل المثال. ليس في MS أزور، هناك بضعة الفروق الدقيقة. يمكن ملاحظتها بشكل خاص إذا كانت المؤسسة كبيرة (أكثر من 300 محطة عمل وخادم) ولم تكتشف بعد عالم الحاويات:

  • لا توجد تقارير كاملة عن حالة الأنظمة. إذا لم يتم تطبيق التكوين المطلوب على بعض الخوادم، فبدون هذه التقارير لن نعرف عنه. من الصعب جدًا الحصول على معلومات من خادم التقارير المدمج، وقد يستغرق الأمر أيضًا وقتًا طويلاً بالنسبة لعدد كبير من المضيفين.
  • يفتقر إلى قابلية التوسع والتسامح مع الخطأ. من المستحيل إنشاء مجموعة من خوادم ويب سحب DSC التي تحتوي على قاعدة بيانات واحدة تتحمل الأخطاء ومخزن مشترك لملفات وزارة المالية للتكوينات والوحدات النمطية ومفاتيح التسجيل.

سأخبرك اليوم كيف يمكنك حل المشكلة الأولى والحصول على بيانات لإعداد التقارير. سيكون كل شيء أسهل إذا أمكن استخدام SQL كقاعدة بيانات. آنسة وعود الدعم المدمج فقط في Windows Server 2019 أو في إصدار Windows Server 1803. جلب البيانات باستخدام موفر OleDB أيضًا لا تعمللأن DSC Server يستخدم معلمة مسماة غير مدعومة بالكامل بواسطة OleDbCommand.

لقد وجدت هذه الطريقة: بالنسبة لأولئك الذين يستخدمون Windows Server 2012 و2016، يمكنك ذلك اقامة استخدام قاعدة بيانات SQL كواجهة خلفية لخادم استعلام DSC. للقيام بذلك، سنقوم بإنشاء "وكيل" في شكل ملف .mdb مع الجداول المرتبطة، والتي ستعيد توجيه البيانات الواردة من تقارير العميل إلى قاعدة بيانات خادم SQL.

ملاحظة: بالنسبة لنظام التشغيل Windows Server 2016، يجب عليك استخدام AccessDatabaseEngine2016x86لأن Microsoft.Jet.OLEDB.4.0 لم يعد مدعومًا.

لن أخوض في التفاصيل حول عملية نشر خادم سحب DSC، فهي موصوفة جيدًا هنا. سأشير فقط إلى بضع نقاط. إذا قمنا بنشر DSC puller على نفس خادم الويب مع WSUS أو Kaspersky Security Center، فسنحتاج في البرنامج النصي لإنشاء التكوين إلى تغيير المعلمات التالية:

  1. UseSecurityBestPractices     = $false

    وإلا، فسيتم تعطيل TLS 1.0 ولن تتمكن من الاتصال بقاعدة بيانات SQL. لن يعمل Kaspersky Security Center أيضًا (يجب حل المشكلة في الإصدار 11 من Kaspersky Security Center).

  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. انتقل إلى قسم تعيين المستخدم. حدد قاعدة البيانات، في هذه الحالة 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.

    يوجد ملف Devices.mdb الذي سنعمل معه في C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.

  1. لاستيراد البيانات، قم بتشغيل معالج الاستيراد والتصدير لـ SQL Server.

    تكوين الحالة المرغوبة في PowerShell والملف: الجزء 1. تكوين DSC Pull Server للعمل مع قاعدة بيانات SQL

  2. نختار المكان الذي سنحصل منه على البيانات - وهي في حالتنا قاعدة بيانات Microsoft Access. انقر فوق {التالي.

    تكوين الحالة المرغوبة في PowerShell والملف: الجزء 1. تكوين DSC Pull Server للعمل مع قاعدة بيانات SQL

  3. حدد الملف الذي نستورد منه الرسم التخطيطي.

    تكوين الحالة المرغوبة في PowerShell والملف: الجزء 1. تكوين DSC Pull Server للعمل مع قاعدة بيانات SQL

  4. نشير إلى مكان الاستيراد - فهي بالنسبة لنا قاعدة بيانات SQL.

    تكوين الحالة المرغوبة في PowerShell والملف: الجزء 1. تكوين DSC Pull Server للعمل مع قاعدة بيانات SQL

  5. حدد خادم SQL (اسم الخادم) وقاعدة البيانات التي سنستورد البيانات إليها (قاعدة البيانات).

    تكوين الحالة المرغوبة في PowerShell والملف: الجزء 1. تكوين DSC Pull Server للعمل مع قاعدة بيانات SQL

  6. حدد الخيار نسخ البيانات من جدول أو طرق عرض واحدة أو أكثر (نسخ البيانات من الجداول أو طرق العرض).

    تكوين الحالة المرغوبة في PowerShell والملف: الجزء 1. تكوين DSC Pull Server للعمل مع قاعدة بيانات SQL

  7. نختار الجداول التي سنستورد منها مخطط قاعدة البيانات.

    تكوين الحالة المرغوبة في PowerShell والملف: الجزء 1. تكوين DSC Pull Server للعمل مع قاعدة بيانات SQL

  8. حدد خانة الاختيار "تشغيل فورًا" وانقر فوق "إنهاء".

    تكوين الحالة المرغوبة في 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، لذلك يتم إعداد قواعد البيانات.mdb على مضيف وسيط مع تثبيت MS Access.

لنقم بإنشاء اتصال ODBC للنظام بخادم SQL (يجب أن تتطابق وحدة بت الاتصال مع وحدة بت MS Access - 64 أو 32). يمكن إنشاؤه باستخدام:
- بوويرشيل 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

— أو يدويًا باستخدام معالج الاتصال:

  1. افتح الأدوات الإدارية. نختار مصادر بيانات ODBC اعتمادًا على إصدار MS Access المثبت. انتقل إلى علامة التبويب System DSN وقم بإنشاء اتصال النظام (إضافة).

    تكوين الحالة المرغوبة في PowerShell والملف: الجزء 1. تكوين DSC Pull Server للعمل مع قاعدة بيانات SQL

  2. نشير إلى أننا سوف نتصل بخادم SQL. انقر فوق إنهاء.

    تكوين الحالة المرغوبة في 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. انقر فوق إنهاء.

    تكوين الحالة المرغوبة في PowerShell والملف: الجزء 1. تكوين DSC Pull Server للعمل مع قاعدة بيانات SQL

  7. قبل إكمال الإعداد، نتحقق من أن الاتصال يعمل (اختبار مصدر البيانات).

    تكوين الحالة المرغوبة في 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. انتقل إلى علامة التبويب "البيانات الخارجية" وانقر فوق "قاعدة بيانات ODBC". في النافذة التي تظهر، حدد إنشاء جدول مرتبط للاتصال بمصدر البيانات.

    تكوين الحالة المرغوبة في PowerShell والملف: الجزء 1. تكوين DSC Pull Server للعمل مع قاعدة بيانات SQL

  2. في النافذة الجديدة، حدد علامة التبويب Machine Data Source وانقر فوق OK. في النافذة الجديدة، أدخل بيانات الاعتماد للاتصال بخادم SQL.

    تكوين الحالة المرغوبة في PowerShell والملف: الجزء 1. تكوين DSC Pull Server للعمل مع قاعدة بيانات SQL

  3. حدد الجداول التي تريد ربطها. حدد مربع حفظ كلمة المرور وانقر فوق "موافق". احفظ كلمة المرور في كل مرة لجميع الجداول الثلاثة.

    تكوين الحالة المرغوبة في PowerShell والملف: الجزء 1. تكوين DSC Pull Server للعمل مع قاعدة بيانات SQL

  4. في الفهارس تحتاج إلى تحديد ما يلي:
    - اسم الهدف لجدول dbo_Devices؛

    تكوين الحالة المرغوبة في PowerShell والملف: الجزء 1. تكوين DSC Pull Server للعمل مع قاعدة بيانات SQL

    - NodeName أو IPAddress لـ dbo_RegistrationData؛

    تكوين الحالة المرغوبة في PowerShell والملف: الجزء 1. تكوين DSC Pull Server للعمل مع قاعدة بيانات SQL

    - NodeName أو IPAddress لـ 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. نقوم الآن بنسخ ملف devices.mdb الناتج إلى خادم DSC (افتراضيًا في C: Program FilesWindowsPowershellDSCService) واستبدال الموجود به (إذا كان موجودًا).

تكوين خادم DSC لاستخدام SQL

  1. نعود إلى خادم DSC. للاتصال بخادم SQL باستخدام ملف الوكيل الخاص بنا، فلنقم بإنشاء اتصال ODBC جديد على خادم DSC. يجب أن تكون إعدادات الاسم وعمق البت والاتصال هي نفسها التي تم إعدادها عند إنشاء ملف MDB. يمكنك نسخ devices.mdb الفارغة التي تم تكوينها بالفعل من هنا.
  2. لاستخدام devices.mdb، تحتاج إلى إجراء تغييرات على web.config لخادم سحب DSC (الإعداد الافتراضي هو 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

  1. دعونا نتحقق من إمكانية الوصول إلى خادم DSC من خلال متصفح الويب.

    تكوين الحالة المرغوبة في PowerShell والملف: الجزء 1. تكوين DSC Pull Server للعمل مع قاعدة بيانات SQL

  2. الآن دعونا نتحقق مما إذا كان خادم سحب DSC يعمل بشكل صحيح. للقيام بذلك، تتضمن وحدة xPSDesiredStateConfiguration البرنامج النصي pullserversetuptests.ps1. قبل تشغيل هذا البرنامج النصي، يجب عليك تثبيت وحدة Powershell تسمى Pester. تثبيته وحدة التثبيت -اسم Pester.
  3. افتح C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<module version>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
    استدعاء-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

إضافة تعليق