يعمل PowerShell Desired State Configuration (DSC) على تبسيط مهمة نشر وتكوين نظام التشغيل وأدوار الخادم والتطبيقات بشكل كبير عندما يكون لديك مئات الخوادم.
ولكن عند استخدام DSC محليًا، على سبيل المثال. ليس في MS أزور، هناك بضعة الفروق الدقيقة. يمكن ملاحظتها بشكل خاص إذا كانت المؤسسة كبيرة (أكثر من 300 محطة عمل وخادم) ولم تكتشف بعد عالم الحاويات:
- لا توجد تقارير كاملة عن حالة الأنظمة. إذا لم يتم تطبيق التكوين المطلوب على بعض الخوادم، فبدون هذه التقارير لن نعرف عنه. من الصعب جدًا الحصول على معلومات من خادم التقارير المدمج، وقد يستغرق الأمر أيضًا وقتًا طويلاً بالنسبة لعدد كبير من المضيفين.
- يفتقر إلى قابلية التوسع والتسامح مع الخطأ. من المستحيل إنشاء مجموعة من خوادم ويب سحب DSC التي تحتوي على قاعدة بيانات واحدة تتحمل الأخطاء ومخزن مشترك لملفات وزارة المالية للتكوينات والوحدات النمطية ومفاتيح التسجيل.
سأخبرك اليوم كيف يمكنك حل المشكلة الأولى والحصول على بيانات لإعداد التقارير. سيكون كل شيء أسهل إذا أمكن استخدام SQL كقاعدة بيانات. آنسة
لقد وجدت هذه الطريقة: بالنسبة لأولئك الذين يستخدمون Windows Server 2012 و2016، يمكنك ذلك
ملاحظة: بالنسبة لنظام التشغيل Windows Server 2016، يجب عليك استخدام
لن أخوض في التفاصيل حول عملية نشر خادم سحب DSC، فهي موصوفة جيدًا
-
UseSecurityBestPractices = $false
وإلا، فسيتم تعطيل TLS 1.0 ولن تتمكن من الاتصال بقاعدة بيانات SQL. لن يعمل Kaspersky Security Center أيضًا (يجب حل المشكلة في الإصدار 11 من Kaspersky Security Center).
-
Enable32BitAppOnWin64 = $true
إذا لم تقم بإجراء هذا التغيير، فلن تتمكن من تشغيل خادم AppPool DSC على IIS مع WSUS.
- عند تثبيت خادم DSC مع WSUS، قم بتعطيل التخزين المؤقت الثابت والديناميكي لموقع 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
- قم باستيراد البيانات من devices.mdb الفارغة كجزء من وحدة PS PSDesiredStateConfiguration من خلال معالج استيراد بيانات SQL.
يوجد ملف Devices.mdb الذي سنعمل معه في C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.
- لاستيراد البيانات، قم بتشغيل معالج الاستيراد والتصدير لـ SQL Server.
- نختار المكان الذي سنحصل منه على البيانات - وهي في حالتنا قاعدة بيانات Microsoft Access. انقر فوق {التالي.
- حدد الملف الذي نستورد منه الرسم التخطيطي.
- نشير إلى مكان الاستيراد - فهي بالنسبة لنا قاعدة بيانات SQL.
- حدد خادم SQL (اسم الخادم) وقاعدة البيانات التي سنستورد البيانات إليها (قاعدة البيانات).
- حدد الخيار نسخ البيانات من جدول أو طرق عرض واحدة أو أكثر (نسخ البيانات من الجداول أو طرق العرض).
- نختار الجداول التي سنستورد منها مخطط قاعدة البيانات.
- حدد خانة الاختيار "تشغيل فورًا" وانقر فوق "إنهاء".
- القيام به.
- ونتيجة لذلك، ينبغي أن تظهر الجداول في قاعدة بيانات DSC.
إعداد ملف .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
— أو يدويًا باستخدام معالج الاتصال:
- افتح الأدوات الإدارية. نختار مصادر بيانات ODBC اعتمادًا على إصدار MS Access المثبت. انتقل إلى علامة التبويب System DSN وقم بإنشاء اتصال النظام (إضافة).
- نشير إلى أننا سوف نتصل بخادم SQL. انقر فوق إنهاء.
- حدد الاسم والخادم للاتصال به. ثم سيلزم إنشاء اتصال بنفس المعلمات على خادم DSC.
- نشير إلى أنه للاتصال بخادم SQL، نستخدم معلومات تسجيل دخول تم إنشاؤها مسبقًا باسم DSC.
- نحدد قاعدة البيانات في إعدادات اتصال DSC.
- انقر فوق إنهاء.
- قبل إكمال الإعداد، نتحقق من أن الاتصال يعمل (اختبار مصدر البيانات).
- القيام به.
إنشاء قاعدة بيانات devices.mdb في MS Access. قم بتشغيل MS Access وقم بإنشاء قاعدة بيانات فارغة تسمى devices.mdb.
- انتقل إلى علامة التبويب "البيانات الخارجية" وانقر فوق "قاعدة بيانات ODBC". في النافذة التي تظهر، حدد إنشاء جدول مرتبط للاتصال بمصدر البيانات.
- في النافذة الجديدة، حدد علامة التبويب Machine Data Source وانقر فوق OK. في النافذة الجديدة، أدخل بيانات الاعتماد للاتصال بخادم SQL.
- حدد الجداول التي تريد ربطها. حدد مربع حفظ كلمة المرور وانقر فوق "موافق". احفظ كلمة المرور في كل مرة لجميع الجداول الثلاثة.
- في الفهارس تحتاج إلى تحديد ما يلي:
- اسم الهدف لجدول dbo_Devices؛
- NodeName أو IPAddress لـ dbo_RegistrationData؛
- NodeName أو IPAddress لـ dbo_StatusReport. - لنقم بإعادة تسمية الجداول في MS Access، وهي: إزالة البادئة dbo_ حتى يتمكن DSC من استخدامها.
- القيام به.
- احفظ الملف وأغلق MS Access. نقوم الآن بنسخ ملف devices.mdb الناتج إلى خادم DSC (افتراضيًا في C: Program FilesWindowsPowershellDSCService) واستبدال الموجود به (إذا كان موجودًا).
تكوين خادم DSC لاستخدام SQL
- نعود إلى خادم DSC. للاتصال بخادم SQL باستخدام ملف الوكيل الخاص بنا، فلنقم بإنشاء اتصال ODBC جديد على خادم DSC. يجب أن تكون إعدادات الاسم وعمق البت والاتصال هي نفسها التي تم إعدادها عند إنشاء ملف MDB. يمكنك نسخ devices.mdb الفارغة التي تم تكوينها بالفعل من هنا.
- لاستخدام 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
- دعونا نتحقق من إمكانية الوصول إلى خادم DSC من خلال متصفح الويب.
- الآن دعونا نتحقق مما إذا كان خادم سحب DSC يعمل بشكل صحيح. للقيام بذلك، تتضمن وحدة xPSDesiredStateConfiguration البرنامج النصي pullserversetuptests.ps1. قبل تشغيل هذا البرنامج النصي، يجب عليك تثبيت وحدة Powershell تسمى Pester. تثبيته وحدة التثبيت -اسم Pester.
- افتح C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<module version>DSCPullServerSetupPullServerDeploymentVerificationTest (في الإصدار التجريبي 8.0.0.0.0).
- افتح PullServerSetupTests.ps1 وتحقق من المسار إلى web.config لخادم DSC. يتم تمييز المسار إلى web.config، الذي سيتحقق من البرنامج النصي، باللون الأحمر. إذا لزم الأمر، نغير هذا المسار.
- قم بتشغيل pullserversetuptests.ps1
استدعاء-Pester.PullServerSetupTests.ps1
се работает. - في SQL Management Studio، نرى أن المضيفين المُدارين يرسلون تقارير إلى خادم تقارير DSC وتنتهي البيانات في قاعدة بيانات DSC على خادم SQL.
هذا كل شئ. في المقالات التالية، أخطط لإخبارك بكيفية إنشاء تقارير حول البيانات التي تم الحصول عليها، وسأتطرق إلى المشكلات المتعلقة بالتسامح مع الأخطاء وقابلية التوسع.
المصدر: www.habr.com