خدمة سحب تكوين الحالة المطلوبة

هام

خادم السحب (Windows Feature DSC-Service) هو مكون مدعوم من Windows Server ولكن لا توجد خطط لتقديم ميزات أو قدرات جديدة. نود أن تعرف أن إصدارا أحدث من DSC متاح الآن بشكل عام، تتم إدارته بواسطة ميزة Azure Policy المسماة تكوين الضيف. تجمع خدمة تكوين الضيف ميزات ملحق DSC وAzure Automation State Configuration والميزات الأكثر شيوعاً المطلوبة من ملاحظات العملاء. يتضمن تكوين الضيف أيضاً دعم الجهاز المختلط من خلال الخوادم الممكنة بواسطة Arc.

يمكن إدارة Configuration Manager المحلية (LCM) مركزيا بواسطة حل خدمة السحب. عند استخدام هذا الأسلوب، يتم تسجيل العقدة التي تتم إدارتها مع خدمة وتعيين تكوين في إعدادات LCM. يتم تنزيل التكوين وجميع موارد DSC المطلوبة كتبعيات للتكوين إلى الجهاز واستخدامها بواسطة LCM لإدارة التكوين. يتم تحميل معلومات حول حالة الجهاز الذي تتم إدارته إلى الخدمة لإعداد التقارير. يشار إلى هذا المفهوم باسم "خدمة السحب".

تتضمن الخيارات الحالية لخدمة السحب ما يلي:

  • خدمة تكوين الحالة المطلوبة ل Azure Automation
  • خدمة سحب تعمل على Windows Server
  • الحلول مفتوحة المصدر التي يحتفظ بها المجتمع
  • مشاركة SMB

المقياس الموصى به لكل حل هو كما يلي:

حل عقد العميل
Windows Pull Server باستخدام قاعدة بيانات MDB/ESENT ما يصل إلى 500 عقدة
Windows Pull Server باستخدام قاعدة بيانات SQL ما يصل إلى 3500 عقدة
Azure Automation DSC البيئات الصغيرة والكبيرة على حد سواء

الحل الموصى به، والخيار مع معظم الميزات المتاحة، هو Azure Automation DSC. لم يتم تحديد حد أعلى لعدد العقد لكل حساب أتمتة.

يمكن لخدمة Azure إدارة العقد محليا في مراكز البيانات الخاصة، أو في السحب العامة مثل Azure وAWS. بالنسبة للبيئات الخاصة حيث لا يمكن للخوادم الاتصال مباشرة بالإنترنت، ضع في اعتبارك تقييد نسبة استخدام الشبكة الصادرة إلى نطاق IP Azure المنشور فقط (راجع نطاقات IP لمركز بيانات Azure).

تتضمن ميزات الخدمة عبر الإنترنت غير المتوفرة حاليا في خدمة السحب على Windows Server ما يلي:

  • يتم تشفير جميع البيانات أثناء النقل وفي حالة الثبات
  • يتم إنشاء شهادات العميل وإدارتها تلقائيا
  • مخزن البيانات السرية لإدارة كلمات المرور/بيانات الاعتماد مركزيا، أو المتغيرات مثل أسماء الخوادم أو سلاسل الاتصال
  • إدارة تكوين LCM للعقدة مركزيا
  • تعيين التكوينات مركزيا لعقد العميل
  • إصدار تغييرات التكوين إلى "مجموعات الكناري" للاختبار قبل الوصول إلى الإنتاج
  • التقارير الرسومية
    • تفاصيل الحالة على مستوى مورد DSC من النقاوة
    • رسائل خطأ مطولة من أجهزة العميل لاستكشاف الأخطاء وإصلاحها
  • التكامل مع Azure Log Analytics للتنبيه والمهام التلقائية، تطبيق Android/iOS لإعداد التقارير والتنبيه

خدمة سحب DSC في Windows Server

من الممكن تكوين خدمة سحب للتشغيل على Windows Server. ننصحك بأن حل خدمة السحب المضمن في Windows Server يتضمن فقط قدرات تخزين التكوينات والوحدات النمطية لتنزيل بيانات التقرير والتقاطها في قاعدة بيانات. لا يتضمن العديد من القدرات التي تقدمها الخدمة في Azure، وبالتالي، ليست أداة جيدة لتقييم كيفية استخدام الخدمة.

خدمة السحب المقدمة في Windows Server هي خدمة ويب في IIS تستخدم واجهة OData لجعل ملفات تكوين DSC متاحة للعقد المستهدفة عندما تطلبها هذه العقد.

متطلبات استخدام خادم سحب:

  • خادم قيد التشغيل:
    • WMF/PowerShell 4.0 أو أحدث
    • دور خادم IIS
    • خدمة DSC
  • من الناحية المثالية، بعض وسائل إنشاء شهادة، لتأمين بيانات الاعتماد التي تم تمريرها إلى Configuration Manager المحلي (LCM) على العقد المستهدفة

أفضل طريقة لتكوين Windows Server لاستضافة خدمة السحب هي استخدام تكوين DSC. يتم توفير مثال على البرنامج النصي أدناه.

أنظمة قواعد البيانات المدعومة

WMF 4.0 WMF 5.0 WMF 5.1 WMF 5.1 (Windows Server Insider Preview 17090)
Mdb ESENT (افتراضي)، MDB ESENT (افتراضي)، MDB ESENT (افتراضي)، SQL Server، MDB

بدءا من الإصدار 17090 من Windows Server، SQL Server هو خيار مدعوم لخدمة السحب (Windows Feature DSC-Service). يوفر هذا خيارا جديدا لتوسيع نطاق بيئات DSC الكبيرة التي لم يتم ترحيلها إلى Azure Automation DSC.

ملاحظة

لن تتم إضافة SQL Server الدعم إلى الإصدارات السابقة من WMF 5.1 (أو إصدار سابق) ولن يتوفر إلا على إصدارات Windows Server الأكبر من أو تساوي 17090.

لتكوين خادم السحب لاستخدام SQL Server، قم بتعيين SqlProvider إلى $trueوSqlConnectionString إلى سلسلة اتصال SQL Server صالحة. لمزيد من المعلومات، راجع سلاسل اتصال SqlClient. للحصول على مثال لتكوين SQL Server مع xDscWebService، اقرأ أولا استخدام مورد xDscWebService ثم راجع 2-xDscWebService_RegistrationUseSQLProvider_Config.ps1 على GitHub.

استخدام مورد xDscWebService

أسهل طريقة لإعداد خادم سحب ويب هي استخدام مورد xDscWebService ، المضمن في الوحدة النمطية xPSDesiredStateConfiguration . توضح الخطوات التالية كيفية استخدام المورد في Configuration الذي يقوم بإعداد خدمة الويب.

  1. اتصل ب Install-Module cmdlet لتثبيت الوحدة النمطية xPSDesiredStateConfiguration .

    ملاحظة

    Install-Module مضمن في وحدة PowerShellGet ، المضمنة في PowerShell 5.0 والإضافات.

  2. احصل على شهادة SSL لخادم سحب DSC من مرجع مصدق موثوق به، إما داخل مؤسستك أو سلطة عامة. عادة ما تكون الشهادة المستلمة من المرجع بتنسيق PFX.

  3. قم بتثبيت الشهادة على العقدة التي ستصبح خادم سحب DSC في الموقع الافتراضي، والذي يجب أن يكون CERT:\LocalMachine\My.

    • دون بصمة إبهام الشهادة.
  4. حدد GUID لاستخدامه كمفتاح التسجيل. لإنشاء واحد باستخدام PowerShell، أدخل ما يلي في موجه PS واضغط على enter: [guid]::newGuid() أو New-Guid. سيتم استخدام هذا المفتاح من قبل عقد العميل كمفتاح مشترك للمصادقة أثناء التسجيل. لمزيد من المعلومات، راجع قسم مفتاح التسجيل أدناه.

  5. في PowerShell ISE، ابدأ (F5) البرنامج النصي للتكوين التالي (المضمن في مجلد وحدة xPSDesiredStateConfiguration ك Sample_xDscWebServiceRegistration.ps1) . يقوم هذا البرنامج النصي بإعداد خادم السحب.

    configuration Sample_xDscWebServiceRegistration
    {
        param
        (
            [string[]]$NodeName = 'localhost',
    
            [ValidateNotNullOrEmpty()]
            [string] $certificateThumbPrint,
    
            [Parameter(HelpMessage='This should be a string with enough entropy (randomness)' +
                ' to protect the registration of clients to the pull server.  We will use new' +
                ' GUID by default.'
            )]
            [ValidateNotNullOrEmpty()]
            [string] $RegistrationKey   # A guid that clients use to initiate conversation with pull server
        )
    
        Import-DSCResource -ModuleName PSDesiredStateConfiguration
        Import-DSCResource -ModuleName xPSDesiredStateConfiguration
    
        Node $NodeName
        {
            WindowsFeature DSCServiceFeature
            {
                Ensure = "Present"
                Name   = "DSC-Service"
            }
    
            xDscWebService PSDSCPullServer
            {
                Ensure                  = "Present"
                EndpointName            = "PSDSCPullServer"
                Port                    = 8080
                PhysicalPath            = "$env:SystemDrive\inetpub\PSDSCPullServer"
                CertificateThumbPrint   = $certificateThumbPrint
                ModulePath              = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Modules"
                ConfigurationPath       = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration"
                State                   = "Started"
                DependsOn               = "[WindowsFeature]DSCServiceFeature"
                RegistrationKeyPath     = "$env:PROGRAMFILES\WindowsPowerShell\DscService"
                AcceptSelfSignedCertificates = $true
                UseSecurityBestPractices     = $true
                Enable32BitAppOnWin64   = $false
            }
    
            File RegistrationKeyFile
            {
                Ensure          = 'Present'
                Type            = 'File'
                DestinationPath = "$env:ProgramFiles\WindowsPowerShell\DscService\RegistrationKeys.txt"
                Contents        = $RegistrationKey
            }
        }
    }
    
  6. قم بتشغيل التكوين، وتمرير بصمة الإبهام لشهادة SSL كمعلمة certificateThumbPrint ومفتاح تسجيل GUID كمعلمة RegistrationKey :

    # To find the Thumbprint for an installed SSL certificate for use with the pull server list all
    # certificates in your local store and then copy the thumbprint for the appropriate certificate
    # by     reviewing the certificate subjects
    
    dir Cert:\LocalMachine\my
    
    # Then include this thumbprint when running the configuration
    $sample_xDscWebServiceRegistrationSplat = @{
        certificateThumbprint = 'A7000024B753FA6FFF88E966FD6E19301FAE9CCC'
        RegistrationKey = '140a952b-b9d6-406b-b416-e0f759c9c0e4'
        OutputPath = 'C:\Configs\PullServer'
    }
    Sample_xDscWebServiceRegistration @sample_xDscWebServiceRegistrationSplat
    
    # Run the compiled configuration to make the target node a DSC Pull Server
    Start-DscConfiguration -Path c:\Configs\PullServer -Wait -Verbose
    

مفتاح التسجيل

للسماح لعقد العميل بالتسجيل مع الخادم حتى يتمكنوا من استخدام أسماء التكوين بدلا من معرف التكوين، يتم حفظ مفتاح التسجيل الذي تم إنشاؤه بواسطة التكوين أعلاه في ملف مسمى RegistrationKeys.txt في C:\Program Files\WindowsPowerShell\DscService. يعمل مفتاح التسجيل كبيانات سرية مشتركة تستخدم أثناء التسجيل الأولي من قبل العميل مع خادم السحب. سيقوم العميل بإنشاء شهادة موقعة ذاتيا تستخدم للمصادقة بشكل فريد على خادم السحب بمجرد اكتمال التسجيل بنجاح. يتم تخزين بصمة الإبهام لهذه الشهادة محليا وربطها بعنوان URL لخادم السحب.

ملاحظة

مفاتيح التسجيل غير مدعومة في PowerShell 4.0.

لتكوين عقدة للمصادقة مع خادم السحب، يجب أن يكون مفتاح التسجيل في تكوين التعريف لأي عقدة هدف سيتم تسجيلها مع خادم السحب هذا. لاحظ أنه تتم إزالة RegistrationKey في metaconfiguration أدناه بعد تسجيل الجهاز الهدف بنجاح، وأن القيمة يجب أن تتطابق مع القيمة المخزنة في RegistrationKeys.txt الملف على خادم السحب ('140a952b-b9d6-406b-b416-e0f759c9c0e4' لهذا المثال). تعامل دائما مع قيمة مفتاح التسجيل بأمان، لأن معرفة أنها تسمح لأي جهاز مستهدف بالتسجيل مع خادم السحب.

[DSCLocalConfigurationManager()]
configuration Sample_MetaConfigurationToRegisterWithLessSecurePullServer
{
    param
    (
        [ValidateNotNullOrEmpty()]
        [string] $NodeName = 'localhost',

        [ValidateNotNullOrEmpty()]
        [string] $RegistrationKey, # the key used to set up pull server in previous configuration

        [ValidateNotNullOrEmpty()]
        [string] $ServerName = 'localhost' # The name of the pull server, same as $NodeName used in previous configuration
    )

    Node $NodeName
    {
        Settings
        {
            RefreshMode        = 'Pull'
        }

        ConfigurationRepositoryWeb CONTOSO-PullSrv
        {
            ServerURL          = "https://$ServerName`:8080/PSDSCPullServer.svc"
            RegistrationKey    = $RegistrationKey
            ConfigurationNames = @('ClientConfig')
        }

        ReportServerWeb CONTOSO-PullSrv
        {
            ServerURL       = "https://$ServerName`:8080/PSDSCPullServer.svc"
            RegistrationKey = $RegistrationKey
        }
    }
}

$MetaConfigurationSplat = @{
    RegistrationKey = $RegistrationKey
    OutputPath = 'c:\Configs\TargetNodes'
}

Sample_MetaConfigurationToRegisterWithLessSecurePullServer @MetaConfigurationSplat

ملاحظة

يسمح قسم ReportServerWeb بإرسال بيانات التقارير إلى خادم السحب.

يعني عدم وجود خاصية ConfigurationID في ملف metaconfiguration ضمنيا أن خادم السحب يدعم إصدار V2 من بروتوكول خادم السحب بحيث يكون التسجيل الأولي مطلوبا. على العكس من ذلك، يعني وجود ConfigurationID أنه يتم استخدام إصدار V1 من بروتوكول خادم السحب ولا توجد معالجة تسجيل.

ملاحظة

في سيناريو PUSH، يوجد خطأ في الإصدار الحالي يجعل من الضروري تعريف خاصية ConfigurationID في ملف تكوين التعريف للعقد التي لم تسجل أبدا مع خادم سحب. سيؤدي ذلك إلى فرض بروتوكول V1 Pull Server وتجنب رسائل فشل التسجيل.

وضع التكوينات والموارد

بعد اكتمال إعداد خادم السحب، تكون المجلدات المحددة بواسطة خصائص ConfigurationPath و ModulePath في تكوين خادم السحب هي المكان الذي ستضع فيه الوحدات والتكوينات التي ستكون متاحة للعقد الهدف لسحبها. يجب أن تكون هذه الملفات بتنسيق معين حتى يقوم خادم السحب بمعالجتها بشكل صحيح.

تنسيق حزمة الوحدة النمطية لمورد DSC

يجب مضغوطة كل وحدة موارد وتسمية وفقا للنمط {Module Name}_{Module Version}.zipالتالي .

على سبيل المثال، سيتم تسمية xWebAdministration_3.1.2.0.zipوحدة نمطية تسمى xWebAdminstration مع إصدار وحدة نمطية من 3.1.2.0 . يجب تضمين كل إصدار من الوحدة النمطية في ملف مضغوط واحد. نظرا لوجود إصدار واحد فقط من مورد في كل ملف مضغوط، فإن تنسيق الوحدة النمطية المضافة في WMF 5.0 مع دعم إصدارات وحدة نمطية متعددة في دليل واحد غير مدعوم. وهذا يعني أنه قبل تجميع وحدات موارد DSC لاستخدامها مع خادم السحب، ستحتاج إلى إجراء تغيير صغير على بنية الدليل. التنسيق الافتراضي للوحدات النمطية التي تحتوي على مورد DSC في WMF 5.0 هو {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\. قبل التعبئة لخادم السحب، قم بإزالة المجلد {Module version} بحيث يصبح {Module Folder}\DscResources\{DSC Resource Folder}\المسار . مع هذا التغيير، اضغط على المجلد كما هو موضح أعلاه وضع هذه الملفات المضغوطة في المجلد ModulePath .

استخدم New-DscChecksum {module zip file} لإنشاء ملف المجموع الاختباري للوحدة النمطية المضافة حديثا.

تنسيق MOF للتكوين

يجب إقران ملف MOF للتكوين بملف المجموع الاختباري بحيث يمكن ل LCM على عقدة هدف التحقق من صحة التكوين. لإنشاء المجموع الاختباري، اتصل ب New-DscChecksum cmdlet. يأخذ cmdlet معلمة Path التي تحدد المجلد حيث يوجد التكوين MOF. ينشئ cmdlet ملف المجموع الاختباري المسمى ConfigurationMOFName.mof.checksum، حيث ConfigurationMOFName هو اسم ملف التكوين mof. إذا كان هناك أكثر من ملف MOF للتكوين في المجلد المحدد، يتم إنشاء المجموع الاختباري لكل تكوين في المجلد. ضع ملفات MOF وملفات المجموع الاختباري المقترنة بها في المجلد ConfigurationPath .

ملاحظة

إذا قمت بتغيير ملف التكوين MOF بأي شكل من الأشكال، يجب عليك أيضا إعادة إنشاء ملف المجموع الاختباري.

الأدوات

لتسهيل إعداد خادم السحب والتحقق من صحته وإدارته، يتم تضمين الأدوات التالية كأمثلة في أحدث إصدار من الوحدة النمطية xPSDesiredStateConfiguration:

  1. وحدة نمطية ستساعد في حزم وحدات موارد DSC وملفات التكوين لاستخدامها على خادم السحب. PublishModulesAndMofsToPullServer.psm1. الأمثلة أدناه:

    # Example 1 - Package all versions of given modules installed locally and MOF files are in c:\LocalDepot
    $moduleList = @('xWebAdministration', 'xPhp')
    Publish-DSCModuleAndMof -Source C:\LocalDepot -ModuleNameList $moduleList
    
    # Example 2 - Package modules and mof documents from c:\LocalDepot
    Publish-DSCModuleAndMof -Source C:\LocalDepot -Force
    
  2. تم تكوين برنامج نصي يتحقق من صحة خادم السحب بشكل صحيح. PullServerSetupTests.ps1.

حلول المجتمع لخدمة السحب

قام مجتمع DSC بتأليف حلول متعددة لتنفيذ بروتوكول خدمة السحب. بالنسبة للبيئات المحلية، توفر هذه إمكانات خدمة السحب وفرصة للمساهمة مرة أخرى في المجتمع من خلال تحسينات متزايدة.

سحب تكوين العميل

تصف الموضوعات التالية إعداد عملاء السحب بالتفصيل:

راجع أيضًا