في أي جانب أنت: ادفع واسحب في تهيئة الحالة المرغوبة

لقد وصفنا بالفعل كيفية وصف التكوين في تكوين الحالة المرغوبة (DSC) وفككنا وكيل إدارة التكوين المحلي (LCM) المدمج لتطبيق التكوين على الخادم. في الجزء الأول من المقالة ، سارنا خطوة بخطوة على الميزات الرئيسية للأداة جنبًا إلى جنب مع Evgeny Parfenov من DataLine .

هنا نتعمق في الإعدادات والميزات في وضعي الدفع والسحب.



ما سنقوله:


  1. الاختلافات بين وضعي الدفع والسحب
  2. وضع الدفع بالتفصيل
  3. وضع السحب بالتفصيل

الاختلافات بين وضعي الدفع والسحب


في وضع Push ، نبدأ يدويًا أو عن طريق البرنامج النصي بعملية تطبيق التغييرات على الخادم (محليًا أو عن بُعد). يقوم مدير التكوين المحلي (LCM) بتطبيق التكوين بشكل تفاعلي.

في وضع السحب ، يقارن وكيل LCM المجدول على الخادم تكوينه بالتكوين المنشور في مستودع التكوين المشترك. إذا كانت هناك تغييرات ، يتم نسخ التكوين محليًا وتطبيقه.

إيجابيات وسلبيات كل من وضعي التشغيل واضحة تماما.
إدفعسحب. شد
+
  1. كلفة. لا يتطلب تثبيت خوادم إضافية.
  2. عمارة بسيطة. يتم تخزين جميع التكوينات محليًا بالشكل المناسب للمسؤول.
  3. مناسب للاختبار. Dsc
  4. طريق DevOps. عند نشر الخوادم ، من السهل جدًا أتمتة وتناسب فلسفة البنية التحتية ككود.
  5. run-once .
  1. . .
  2. . DSC .
  3. Azure Automation State Configuration, Windows Server 2012R2+
  1. On-Premise c . , .
  1. , .
  2. On-Premise GPO, .
  3. — , .
يختلف إعداد الموارد أيضًا قليلاً لأوضاع مختلفة. كما نتذكر ، لاستخدام مورد ، تحتاج إلى تثبيته محليًا وعلى الخادم.

في حالة استخدام وضع Push (الدفع) ، يجب على المسؤول أولاً تثبيت جميع الموارد اللازمة على الخادم المُدار وعلى الكمبيوتر الشخصي ، حيث سيتم إرسال التكوين.

في وضع السحب ، يمكن لعامل DSC على الخادم المُدار تثبيت جميع الموارد الضرورية بشكل مستقل من خادم السحب ؛ وتتمثل مهمة المسؤول في وضعها على خادم السحب. ومع ذلك ، فإننا نضع في اعتبارنا أنه من المستحيل التنبؤ بتطبيق التكوين في وضع السحب ، لأن GPO ليس تسليمًا مضمونًا للإعدادات.

وضع الدفع بالتفصيل


يمكن تمثيل عملية المستوى



الأعلى لكتابة تكوينات DSC وتطبيقها على النحو التالي: في المرحلة الأولى ( التأليف ) نصفنا التكوين باستخدام أي IDE مناسب لنا (Notepad و PowerShell ISE و Visual Studio Code وغيرها). عند الانتهاء ، نقوم بتجميع ملفات التكوين mof (تم وصف عملية الترجمة في مقالتنا السابقة ).

في المرحلة الثانية ( التدريج / التجميع ) ، نبدأ في تطبيق التكوين من ملف mof المترجمة باستخدام Start-DSCConfiguration cmdlet . في هذه العملية ، يرسل خادم الإدارة ملف .mof لخادم LCM ، وهو تطبيق التكوين.
في هذه الحالة ، من الأفضل استخدام المفتاح -Verbose. للتحكم الكامل في عملية التكوين:

PS C:\windows\system32> Start-DscConfiguration -Path C:\EnvironmentVariable_Path\ -Wait -Verbose

# C 
VERBOSE: Perform operation 'Invoke CimMethod' with following parameters, ''methodName' =
SendConfigurationApply,'className' = MSFT_DSCLocalConfigurationManager,'namespaceName' =
root/Microsoft/Windows/DesiredStateConfiguration'.
VERBOSE: An LCM method call arrived from computer COMPUTER with user sid
S-1-5-21-SID.

#  
VERBOSE: [COMPUTER]: LCM:  [ Start  Set      ]
VERBOSE: [COMPUTER]: LCM:  [ Start  Resource ]  [[Environment]CreatePathEnvironmentVariable]

#       (test)
VERBOSE: [COMPUTER]: LCM:  [ Start  Test     ]  [[Environment]CreatePathEnvironmentVariable]
VERBOSE: [COMPUTER]:                            [[Environment]CreatePathEnvironmentVariable] Environment variable
'TestPathEnvironmentVariable' does not exist.
VERBOSE: [COMPUTER]: LCM:  [ End    Test     ]  [[Environment]CreatePathEnvironmentVariable]  in 0.1320 seconds.
#      “Environment variable 'TestPathEnvironmentVariable' does not exist”

#       
VERBOSE: [COMPUTER]: LCM:  [ Start  Set      ]  [[Environment]CreatePathEnvironmentVariable]
VERBOSE: [COMPUTER]:                            [[Environment]CreatePathEnvironmentVariable] Environment variable
'TestPathEnvironmentVariable' created with value 'TestValue'.
VERBOSE: [COMPUTER]: LCM:  [ End    Set      ]  [[Environment]CreatePathEnvironmentVariable]  in 0.0690 seconds.
VERBOSE: [COMPUTER]: LCM:  [ End    Resource ]  [[Environment]CreatePathEnvironmentVariable]
VERBOSE: [COMPUTER]: LCM:  [ End    Set      ]
VERBOSE: [COMPUTER]: LCM:  [ End    Set      ]    in  2.1900 seconds.
#  

#  
VERBOSE: Operation 'Invoke CimMethod' complete.
VERBOSE: Time taken for configuration job to complete is 2.749 seconds

يمكن ملاحظة أن المحرك تحقق من وجود المتغير ، ولم يعثر عليه وأنشأ متغيرًا جديدًا ، وفقًا للتكوين المحدد:



في المرحلة الثالثة ( التنفيذ ) ، يدخل وكيل DSC LCM اللعبة. يتلقى ملفًا mof ويتحقق منه ويضعه في مجلد $env:systemRoot/system32/configurationويطلق سير عمل لتطبيق ملف التكوين:

  1. يتلقى LCM ، تطبيق ملف التكوين. تمت إعادة تسمية الملف إلى pending.mof ووضعه في$env:systemRoot/system32/configuration
    • إذا فشل تطبيق ملف التكوين ، سيبقى الملف pending.mof ، وسيحاول LCM تطبيقه في الدورة التالية.
  2. إذا كان الملف الحالي.mof موجودًا بالفعل في المجلد ، فسيتم إعادة تسميته إلى المجلد السابق.mof
  3. إذا اكتمل تطبيق ملف التكوين بنجاح ، فإن LCM يعيد تسميته إلى current.mof
  4. يتم نسخ الملف الحالي.mof إلى ملف backup.mof

بشكل رسومي ، يمكن تمثيل سير العمل على النحو التالي:



لإدارة ملفات التكوين المختلفة ، هناك الأمر cmdlet Remove-DSCConfigurationDocument الذي يسمح لك بحذف مستندات معينة إذا كان ذلك ضروريًا لسبب ما. ومع ذلك ، لا شيء يمنعنا من إزالتها يدويًا.

وضع السحب بالتفصيل


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

سيبدو المخطط العام على



النحو التالي : وضع السحب يتطلب نشر خادم سحب. في الواقع ، هو خادم ويب عادي ، والذي يمكن أن يمنح العملاء ملفات وموارد قد تكون مطلوبة عند تطبيق التكوينات من ملفات mof. هذا الأخير يبسط إلى حد كبير عملية إدارة وتكوين الخوادم ، حيث أن مهمة توفير الموارد اللازمة تقع على عاتق العميل. يعمل خادم Pull في نفس الوقت كمستودع \ مستودع موارد.

يمكن أن يوفر خادم السحب الوصول إلى الموارد وملفات التكوين من خلال بروتوكولين:

  1. SMB. . DFS-R. , , . SMB , Kerberos.
  2. Http\https. . IIS.

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

سير العمل لمزيد من العمل مع خادم السحب على النحو التالي:

  1. نقوم بتكوين العملاء (LCM) للعمل مع خادم سحب.
  2. نقوم بتحميل ملفات الموارد إلى خادم السحب.
  3. نقوم بإعداد ملفات تكوين العميل (الكتابة والتجميع) والملفات مع المجموع الاختباري.
  4. استمتع بالنتيجة.

تكوين العملاء (LCM) للعمل مع خادم سحب

للقيام بذلك ، استخدم إعدادات LocalConfigurationManager (v5) التالية :

حظر الإعدادات:

  • CertificateID - يشير إلى بصمة الشهادة لحماية تسجيلات الدخول / كلمات المرور المرسلة في التكوين.
  • ConfigurationID - يحتوي على GUID للعميل. سيتم فقط تطبيق التكوينات التي تحتوي على GUID الخاص به في اسم ملف التكوين على العميل. تم ترك الإعداد للتوافق مع الإصدارات الأقدم من خادم السحب. من الأفضل استخدام إعداد RegisterKey.
  • RefreshMode - للعمل مع خوادم السحب ، حدد سحب في هذا الإعداد.

تكوين الكتلة مستودع التخزين Web:

  • AllowUnsecureConnection - السماح \ عدم السماح بالاتصال بدون مصادقة.
  • CertificateID - يشير إلى بصمة الشهادة على العميل ، والتي سيتم استخدامها في عملية المصادقة المتبادلة مع الخادم.
  • ConfigurationNames - صفيف من أسماء التكوين التي سيتم تطبيقها على العميل.
  • مفتاح التسجيل - سر تم إنشاؤه على الخادم ، ويستخدمه العميل للتسجيل على الخادم.
  • ServerURL - عنوان URL لخادم السحب مع التكوينات.

كتلة ResourceRepositoryWeb:

  • AllowUnsecureConnection - السماح \ عدم السماح بالاتصال بدون مصادقة.
  • CertificateID - يشير إلى بصمة الشهادة على العميل ، والتي سيتم استخدامها في عملية المصادقة المتبادلة مع الخادم.
  • مفتاح التسجيل - سر تم إنشاؤه على الخادم ، ويستخدمه العميل للتسجيل على الخادم.
  • ServerURL - عنوان URL لخادم السحب مع الموارد.

كتلة ReportServerWeb:

  • AllowUnsecureConnection - السماح \ عدم السماح بالاتصال بدون مصادقة.
  • CertificateID - يشير إلى بصمة الشهادة على العميل ، والتي سيتم استخدامها في عملية المصادقة المتبادلة مع الخادم.
  • مفتاح التسجيل - سر تم إنشاؤه على الخادم ، ويستخدمه العميل للتسجيل على الخادم.
  • ServerURL - عنوان URL لخادم السحب مع التقارير.

تحميل ملفات الموارد إلى خادم السحب

بعد تطبيق الإعدادات الجديدة على LCM ، والتي ستعلمه كيفية استخدام خادم Pull ، يمكنك تحميل ملفات الموارد إلى الخادم . يتم تحميل الموارد إلى الخادم في شكل ملفات مضغوطة (المجلد مع المورد معبأ في ملف مضغوط). قاعدة لتسمية مثل هذا الملف:

{ModuleName}_{Version}.zip

موقع الملف الافتراضي $env:PROGRAMFILES\WindowsPowerShell\DscService\Modules. عند تثبيت خادم Pull ، يمكن إعادة تعريف هذا المجلد. بالإضافة إلى الملف الذي يحتوي على مجلد الموارد المحزوم بتنسيق zip ، يجب أيضًا وضع الملف مع المجموع الاختباري لهذا المورد المحزوم في نفس المكان. على سبيل المثال ، مثل هذا:

New-DscChecksum -Path .\xPSDesiredStateConfiguration_8.4.4.0.zip

وضع ملفات تكوين العميل على خادم السحب

من المهم أن نلاحظ هنا أنه يمكننا استخدام وضعي تشغيل العميل في هذه الحالة (في الواقع اثنان ونصف): سيتلقى العميل من الخادم التكوين باستخدام ConfigurationID ، أو سيستخدم العميل اسم التكوين - ConfigurationName . إذا كان من الضروري تطبيق العديد من التكوينات ، فيمكن تحديدها جميعًا في ConfigurationName ، ولكن سيتعين عليك تكوين LCM للعمل مع التكوينات الجزئية.

عند استخدام ConfigurationID ، يجب التأكيد على أن ملف التكوين mof الذي سيتم تطبيقه على العميل سيحتوي على GUID (وهو موجود في ConfigurationID). في حالة استخدام ConfigurationName ، سيحتوي ملف mof على اسم التكوين ، الذي سنحدده في ConfigurationName. في كلتا الحالتين ، بالإضافة إلى ملف mof ، سيتم أيضًا وضع ملف المجموع الاختباري للتكوين هناك:

New-DscChecksum -Path '.\' -Force

فى الختام


نظرنا إلى طريقتين لتطبيق التغييرات على الخادم في وضعي Push و Pull. استعرضنا ميزات الاستخدام وحاولنا شرح جميع الفروق الدقيقة التي قد تنشأ عند العمل مع هذه الأوضاع في DSC. إذا كان لا يزال لديك أسئلة - فلنناقش في التعليقات. وإذا لم يكن لديك مستوى رؤية كافٍ ، فانتقل إلى اجتماعنا عبر الإنترنت في 28 مايو: سنحلل أنظمة الاتصالات الموحدة ومرافق الاتصالات (إعداد تحميل سجلات Exchange في Elastic ، و Microsoft Endpoint Manager لأنظمة iOS ، و Android ، و Windows 10) ونتحدث بمزيد من التفاصيل حول حدود قابلية التطبيق تكوين حالة PowerShell المطلوبة. تحتاج فقط للتسجيل .

All Articles