
حسنًا ، حان الوقت الآن لجعل Windows يقوم بتحديث الأصدقاء مع عالم مفتوح المصدر. في هذه المقالة ، ننوع الحياة من خلال دمج Ansible مع جميع مصادر التحديثات الممكنة لأجهزة Windows. على الرغم من أن إمكانات النظام أوسع بكثير من مجرد طرح التحديثات على الخوادم ومحطات العمل ، عليك أن تبدأ في مكان ما.
في الوقت نفسه ، سنتخلص من الإزعاج المزعج لـ WSUS إذا كنت تفضل "المدرسة القديمة".
لماذا لا نحب WSUS
لن أتحدث عن إعداد خدمات Windows Server Update Services ، لأنها تافهة. ركز على السلبيات.

لم تتغير واجهة WSUS كثيرًا عبر التاريخ.
عدم القدرة على التثبيت عند الطلب . في الواقع ، يعمل WSUS بشكل جيد للتشغيل المنتظم - يتم تكوين التحديثات وتثبيتها بسهولة على الشبكة المحلية عند إيقاف تشغيل أجهزة الكمبيوتر. ولكن إذا كنت بحاجة ماسة إلى تثبيت تصحيحات الأمان ، فسيتعين عليك الخروج باستخدام البرامج النصية والحلول لتشغيل هذه البرامج النصية. يمكن أن تساعد مادتنا " طريقة 1000 ++ لتشغيل الأوامر على جهاز كمبيوتر بعيد " في ذلك.
عدم وجود طريقة منتظمة لتثبيت تحديثات برامج الجهات الخارجية . إذا كان هناك خادم تحديث ، فيبدو من المعقول استخدامه ليس فقط لتحديثات برامج MS ، ولكن أيضًا للحلول الأخرى. على سبيل المثال ، لا يتم اكتشاف الثغرات بشكل منتظم في Adobe Flash Player المذكور أعلاه على فترات منتظمة ، وأود أيضًا أن أسعد المستخدمين بميزات FireFox الجديدة. لتثبيت التحديثات من خلال WSUS ، يجب عليك استخدام حلول الجهات الخارجية مثل WSUS Package Publisher . يمكنك الاطلاع على أمثلة التهيئة في المقالة " تثبيت أي برنامج باستخدام WSUS - 2 ".
باستخدام قاعدة بيانات Windows المضمنة . في التثبيت القياسي ، يستخدم WSUS WID - قاعدة بيانات Windows الداخلية. هذا هو في الأساس خادم SQL صغير مضمن مع قاعدة بيانات. في حالة حدوث أي أعطال أو تضارب - على سبيل المثال ، إذا كان لديك وسيط اتصال سطح المكتب البعيد و WSUS على نفس الخادم - يجب عليك إصلاح قاعدة البيانات هذه وتكوين حقوق الوصول والاستمتاع بكل طريقة. نعم ، ولن يؤذي النسخ الاحتياطي. لحسن الحظ ، يمكن لـ WSUS استخدام SQL الكلاسيكية أيضًا. لترحيل قاعدة بيانات WSUS ، يمكنك استخدام التعليمات الخاصة بترحيل قاعدة بيانات WSUS من WID إلى SQL من Microsoft.
الحاجة إلى الخدمة والإعداد غير الواضح للعملاء الفاشلين. كما هو الحال مع منتجات Microsoft ، عاجلاً أم آجلاً ، يبدأ WSUS في التباطؤ: لا يمكن للعملاء الحصول عليه لفترة طويلة وتنزيل التحديثات. يمكن العثور على مجموعة من النصائح والتحسينات في مقالة " تسريع WSUS " وفي التعليقات عليها.
بالطبع ، يمكنك العيش مع هذه السلبيات ، ولكن يمكنك أيضًا أن تجعل حياتك أسهل باستخدام أدوات أخرى ، باستخدامها مع WSUS ، وبدونها.
تثبيت التحديثات باستخدام Ansible
يمكن لأي نظام إدارة تكوين تقريبًا تسهيل العمل مع التحديثات. لنحلل مثالاً يعتمد على Ansible لتثبيت التحديثات عند الطلب.
ترتيب holivar ، وهو أفضل من الأنظمة الحرة - Ansible أو Chef أو Puppet أو حتى Salt ، ليس هناك أدنى رغبة. تم اختيار Ansible لعدم وجود حاجة للوكلاء ولسهولة التكوين. وبطبيعة الحال ، بسبب Python: بعد كل شيء ، هذه اللغة أسهل بكثير في التعلم عن التشغيل الآلي للمبتدئين ، على عكس Ruby.
تجدر الإشارة إلى أنه بالإضافة إلى حل المشكلة ، سيكون من المفيد التعرف على مبادئ تشغيل هذه الأنظمة. ما لم تكن بالطبع قد استمتعت بتثبيت Streisand ، خاصة عندما يحدث خطأ في العملية. وإذا كنت تستخدم بالفعل Ansible أو غيرها من الحلول العصرية ، فيمكنك بسهولة تثبيت التحديثات. أوصي بقراءة أساسيات Ansible في مقالة " دليل Ansible " ، وفيما يلي تعليمات خطوة بخطوة للعمل مع التحديثات.
أولاً ، قم بإعداد خادم Ansible. ستفعل أي توزيعة GNU \ Linux تقريبًا ، لكني سأقدم أمثلة على أوامر خادم Ubuntu (كما كان تاريخياً).
أولاً ، قم بتثبيت مدير الحزم لتطبيقات Python:
apt-get install python-pip pip install --upgrade pip pip install --upgrade virtualenv
ثم نحتاج إلى تثبيت حزمة pywinrm للاتصال بأنظمة Windows ونظام Ansible مباشرة:
sudo pip install pywinrm sudo pip install ansible
يمكنك التحقق من التثبيت باستخدام الأمر ansible --version .

التحقق من التثبيت.
بدلاً من الحزمة في نظرية pywinrm ، يمكنك استخدام أي أداة أخرى لإدارة Windows من جهاز Linux. تمت مناقشتها في مقالة " التلقيح المتبادل: إدارة لينكس من ويندوز ، والعكس بالعكس ".
تحتاج الآن إلى تمكين الاتصال بـ Windows عبر WinRM. للقيام بذلك ، هناك برنامج نصي ConfigureRemotingForAnsible.ps1 جاهز متوفر على GitHub . حسنًا ، أنت تعرف بالفعل كيفية تشغيل البرامج النصية على الأجهزة البعيدة.
يمكنك التحقق من الاتصال بـ Windows باستخدام الأمر:
ansible windows -m win_ping

تم التحقق من الاتصال بنجاح.
الآن يمكنك البدء في إنشاء كتاب اللعب. حقيقة أن المطورين Ansible قد فكروا بالفعل بالنسبة لنا وجعلوا وحدة win_updates ، فقط لحل مثل هذه المشاكل ، ستجعل حياتنا أسهل.
إن دليل التشغيل هو "تعليمات" تخبر نظام إدارة التهيئة بما يجب فعله. خطوة بخطوة بالطبع.
أي كتاب تشغيل هو ملف yml وهو عبارة عن مجموعة من التوجيهات - لكل وحدة نمطية خاصة بها. تتيح لك وحدة winupdate استخدام التوجيهات التالية (القيم الافتراضية بخط غامق):
العنوان | القيمة | الوصف |
أسماء الفئة | التطبيق موصلات تحديثات مهمة التعريفات مجموعات المطور حزم الميزات الإرشاد تحديثات الأمان حزم الخدمة أدوات UpdateRollups التحديثات
| فئة التحديثات. |
القائمة البيضاء | تحديث الرقم أو قالب الاسم. | عدد التحديثات المثبتة مباشرة هو KB01234 أو نمط اسم التعبير العادي لـ PowerShell. |
القائمة السوداء | تحديث الرقم أو قالب الاسم. | مباشرة عدد التحديثات التي لا تحتاج إلى تثبيت ، مثل KB01234 أو قالب الاسم في شكل PowerShell تعبير عادي. |
إعادة التشغيل | نعم لا | هل يلزم إعادة التشغيل بعد الترقية؟ |
مهلة إعادة التشغيل | ثواني ، 1200 | ما هو الوقت المناسب لانتظار السيارة بعد إعادة التشغيل. |
الدولة | مثبتة تم البحث | سواء لتثبيت التحديثات ، أو مجرد البحث. |
log_path | مسار الملف | يجب أن يوجد سجل التثبيت والمجلد. |
وبالتالي ، فإن دليل التشغيل التالي مناسب لتثبيت تحديثات معينة:
- name: Install specific updates based on the KBs for those updates win_updates: category_name: - SecurityUpdates whitelist: - KB4073819 - KB4074228
وإذا كنت بحاجة فقط إلى حساب عدد التحديثات المفقودة ، فسيكون كتاب التشغيل على النحو التالي:
– name: Check for missing updates win_updates: state=searched register: update_count
لتثبيت جميع التحديثات المتاحة ، متبوعة بإعادة التشغيل ، سيكون هناك دليل تشغيل مشابه:
- name: Install all critical and security updates win_updates: category_names: - CriticalUpdates - SecurityUpdates - UpdateRollups state: installed register: update_result - name: reboot host if required win_reboot: when: update_result.reboot_required
دعني أذكرك أنك تحتاج إلى ملف جرد للعمل مع قائمة الخوادم. على سبيل المثال ، هذا:
[DCs] dc1.mydomain.local dc2.mydomain.local [AppServers] app1.mydomain.local app2.mydomain.local [DBServers] db1.mydomain.local db2.mydomain.local
والآن ، لتثبيت التحديثات فقط على وحدات تحكم المجال ، يمكنك استخدام playbook:
- hosts: DCs tasks: - name: Choose which Windows updates to install win_updates: category_names: - SecurityUpdates - CriticalUpdates - UpdateRollups
سيكون الفريق الذي سيقوم بكل هذه العمليات على هذا النحو:
ansible-playbook -i inventory.yml -s windowsupdates.yml
قد يسأل القارئ اليقظ عن مصدر التحديثات التي تم تنزيلها. سيكون المصدر هو المصدر الذي تم تكوينه على الكمبيوتر: سواء كان Windows Update على الإنترنت أو WSUS المحلي. حتى إذا لم تصل يديك إلى إعدادات WSUS ، يمكنك إصدار الأمر لتثبيت التحديثات العاجلة الضرورية ، خاصة إذا كانت أجزاء Lego قد انسكبت بالفعل تحت قدميك.
يبقى أن نضيف أنه ليس من الضروري استخدام Ansible بالضبط. على سبيل المثال ، بالنسبة لنظام إدارة تكوين Chef ، يمكنك استخدام Cookbook Wsus Client أو boxstarter الأكثر تعقيدًا . توجد وحدات مماثلة للدمى. بشكل عام ، يمكن لأي نظام إدارة تكوين تقريبًا القيام بشيء مماثل ، بما في ذلك MS SCCM.
أخيرًا ، سأعطيك بعض الأدوات الأخرى التي تهمني.
أنظمة وحلول أخرى
WSUS غير متصل . البرنامج الذي يسمح لك بتنزيل التحديثات الضرورية في حزمة واحدة ، إذا لزم الأمر ، يمكن تعبئته في ISO. يمكنك أيضًا وضع الحزمة في مجلد شبكة وتثبيت التحديثات باستخدام البرامج النصية ، دون نشر WSUS الكامل.
إدارة التصحيح بواسطة Comodo. نظام تثبيت التحديثات لنظام التشغيل Windows والبرامج الأخرى. على عكس الحلول الأخرى ، إنه مجاني.

واجهة Comodo Patch Management.
Opsi . نظام مجاني ومثير للاهتمام لا يدعم تثبيت التحديثات فحسب ، بل أيضًا أنظمة التشغيل ، بالإضافة إلى المخزون.
باتش باتش . النظام المدفوع الوحيد في القائمة. يتيح لك تثبيت البرنامج وتحديثه مثل Windows وغير ذلك الكثير. يختلف في تصميم المدرسة القديمة ، وكذلك في التكلفة ليس بالنسبة لعدد المضيفين المستضافين ، ولكن لمستخدمي البرنامج ، أي المسؤولين. ربما يكون هذا أحد الحلول القليلة التي تضع نفسها على أنها نظير لـ WSUS. يبدأ السعر من 400 دولار.

واجهة BatchPatch.
في التعليقات ، أضف أدواتك المفضلة للعمل مع التحديثات والمزيد.