حتى وإن كان Ansible معروفًا بإدارة العقد Linux باستخدام SSH ، هل تعلم أن Ansible يعمل بشكل جيد أيضًا على نظام التشغيل Windows؟ باستخدام Windows Remote Management (WinRM) ، يمكن لـ Ansible على نظام التشغيل Windows إدارة جميع العقد الخاصة بك بفعالية!
مع Ansible على نظام التشغيل Windows ، يمكنك أداء مهام مثل نشر التصحيحات ، وإدارة خوادم Windows ، وتنفيذ نصوص PowerShell ، والمزيد.
في هذا البرنامج التعليمي ، ستتعلم كيفية إعداد أول عقد Windows الخاص بك ليتم إدارته باستخدام Ansible وكيفية تشغيل الأوامر والسيناريوهات ضده.
متطلبات أساسية
إذا كنت ترغب في متابعة البرنامج التعليمي ، يرجى التأكد من وجود ما يلي قبل البدء:
- مضيف تحكم Ansible – سيتم استخدام Ansible v2.9.18 في هذا البرنامج التعليمي على جهاز Ubuntu 18.04.5 LTS بعنوان IP 10.111.4.53. يرجى ملاحظة أن نظام التشغيل Windows لا يتم دعمه كعقد تحكم ، بل كعقد مُدار فقط.
- Python مثبت على مضيف تحكم Ansible – سيتم استخدام Python v2 في هذا البرنامج التعليمي ، ولكن يجب أن يعمل v3 بنفس الكفاءة.
- الحزمة pip مثبتة على مضيف تحكم Ansible.
- A Windows 2012 R2 or greater computer for Ansible to manage – This tutorial will use two Windows Server 2012 R2 Standard machines as remote nodes with IP addresses of 52.242.251.213 and 10.111.4.106.
- A Windows workstation – This tutorial will perform some basic pre-configuration to the node that Windows will manage with Ansible and will require you to sitting at a Windows workstation.
- يجب أن يكون لدى خادم Windows الذي سيتم إدارته تمكين PowerShell Remoting
- A user account in the local Administrators group on the Windows computer. This tutorial will use an account called adminuser.
إعداد مستمع WinRM على نظام التشغيل Windows
قبل أن يتمكن Ansible من التواصل مع عقد Windows البعيدة، يجب أن يكون قادرًا على إجراء اتصال بها. يتم ذلك من خلال بروتوكول Microsoft WinRM. WinRM هو نفس البروتوكول الذي يستخدمه PowerShell Remoting لتشغيل الأوامر البعيدة من داخل PowerShell.
حتى كتابة هذا النص، لا يدعم Ansible SSH كبروتوكول إدارة، ولكنه ميزة تجريبية في هذا الوقت.
لكي يستخدم Ansible WinRM للتواصل مع عقد Windows، يجب عليك تكوين WinRM. ولفعل ذلك، يقدم Ansible نصًا برمجيًا باستخدام PowerShell يعين مختلف خيارات WinRM.
على الرغم من أن نص PowerShell الذي يوفره Red Hat لتكوين WinRM قد تم اختباره وهو آمن، يجب عليك قراءته وفهمه، على المستوى العالي، لماذا يتم ذلك.
سيكون عليك في المرة الأولى تحميل نص التكوين وتشغيل Ansible على عقد Windows. للقيام بذلك، وافترضنا أنك قد قمت بتمكين PowerShell Remoting بالفعل على جهاز الكمبيوتر الخاص بك وأنك في جهاز عمل Windows:
قم بتنزيل النص البرمجي PowerShell ConfigureRemotingForAnsible.ps1 إلى جهاز الكمبيوتر الخاص بك بنظام Windows المحلي. ستفترض هذه الدورة التعليمية أنه تم حفظه في ~\Downloads.
قم بتشغيل النص البرمجي للتكوين على جهاز Windows الذي سيديره Ansible باستخدام Invoke-Command
الأمر. الأمر أدناه سيقوم بتشغيل الأمر على جهازي الديمو في الدورة التعليمية وسيطلب منك كلمة المرور لحساب adminuser المحلي على العقد Windows.
بشكل افتراضي، سيقوم النص البرمجي للتكوين بتكوين WinRM للمصادقة الأساسية عبر HTTP. إذا كنت ترغب في أن يستخدم Ansible اتصالًا أكثر أمانًا، تعلم كيفية تكوين WinRM عبر HTTPS لـ Ansible.
تكوين تحكم Ansible على Windows
الآن بعد أن أصبح العقد Windows جاهزًا لـ Ansible، دعنا نقوم الآن بتكوين تحكم Ansible لإظهار لـ Ansible كيفية التواصل معه.
1. قم بالاتصال بمضيف تحكم Ansible الخاص بك عبر SSH باستخدام عميل SSH المفضل لديك.
2. قم بتثبيت وحدة Python pywinrm. الوحدة البرمجية pywinrm الخاصة بـ Python مطلوبة لـ Ansible على Windows للتواصل مع المضيف عبر بروتوكول WinRM.
تعريف عقدة Windows البعيدة في ملف تعريف Ansible. ملف تعريف Ansible هو مجموعة من الخوادم البعيدة المعرفة في ملف إما بواسطة اسم الخادم الخاص بها أو عنوان IP. بمجرد تعريفها، يمكنك بعد ذلك استهداف ملفات تعريف Ansible بأوامر ودفاتر اللعب، كما سترى قريبًا.
ملف تعريف Ansible الافتراضي يقع في دليل /etc/ansible/hosts.
تم إنشاء ملف تعريف العينة أدناه مجموعة windows
المضيف التي تحتوي على كل عقدة Windows. يتم استخدام مجموعة المضيفين هنا في البرنامج التعليمي لتسهيل استهداف جميع عقد Windows (إذا كان لديك أكثر من واحدة) دفعة واحدة لاحقًا.
بعد ذلك، قم بتعريف بعض المتغيرات المطلوبة التي ستستخدمها Ansible عند الاتصال بالخوادم Windows في ملف التعريف كمجموعة windows:vars
.
5. الآن، استخدم وحدة Ansible win_ping لتنفيذ اختبار اتصال بسيط إلى المضيفين داخل مجموعة المضيفين windows
المحددة في الخطوة #3.
بمجرد التنفيذ، يمكنك أن ترى أدناه أن Ansible يعيد النص الأخضر مع رسالة نجاح تشير إلى محاولة البنج الناجحة.

يؤكد الإخراج أن مضيف تحكم Ansible يمكنه التواصل مع المضيف البعيد لنظام التشغيل Windows بنجاح عبر WinRM.
تشغيل الأوامر المؤقتة على المضيفين الخاصة بنظام التشغيل Windows
في هذه المرحلة، أنت جاهز تمامًا للبدء في التحكم في عقد Windows باستخدام Ansible. دعونا نختبر هذا الآن من خلال تشغيل أمر مؤقت على عقد Windows لتغييرها. الأوامر المؤقتة رائعة عندما تحتاج إلى تشغيل أمر بسيط على العقد دون إنشاء سيناريو أولاً.
لنقم بتوضيح الأوامر المؤقتة من خلال تثبيت ميزة Windows على العقد Windows المحددة في ملف المخزن. للقيام بذلك، افترض أنك لا تزال متصلًا عبر SSH بعقد تحكم Ansible الخاص بك:
1. بدلاً من وحدة win_ping هذه المرة، قم باستدعاء وحدة win_feature (-m
)، ممررًا لها معها وسمين (-a
) من name
و state
تشير إلى اسم ميزة Windows والحالة التي ترغب في تحقيقها.
عند تشغيل الأمر أعلاه، إذا كان كل شيء على ما يرام، يجب على Ansible الاتصال بجميع العقد في مجموعة المضيف windows
وتشغيل الأمر win_feature على كل منها، متحققًا من وجوده، وإذا لم يكن موجودًا، قم بتثبيت ميزة Telnet-Client
في Windows.

2. يظهر Ansible نجاحًا، ولكن للتأكد، اتصل بعقد Windows يدويًا باستخدام PowerShell وتحقق مما إذا كانت ميزة Telnet Client مثبتة الآن. على محطة العمل الخاصة بك في Windows المحلية، قم بتشغيل Invoke-Command
لتشغيل الأمر Get-WindowsFeature
PowerShell على كل حاسوب Windows.
في هذه النقطة، يمكنك تشغيل أي وحدة Windows ترغب فيها كأوامر فورية!
إنشاء وتشغيل العروض التقديمية على ويندوز مع Ansible
بمجرد أن تتقن فن تشغيل الأوامر على النحو المؤقت على العقد المُدارة بواسطة Windows، مهمتك التالية هي إنشاء وتشغيل الـ بلاي بوكس.. بلاي بوكس أنسيبل يجمع الأوامر في مكان واحد ويسمح لك بكتابة منطق معقد لتنفيذ سيناريوهات تشغيل ذاتية معقدة.
تشغيل الأوامر عن بُعد على Windows باستخدام وحدة win_command
بفرض أنك لا تزال متصلًا بجهاز تحكم Ansible:
1. قم بإنشاء مجلد تحت دليل المستخدم الخاص بك بالاسم ansible-windows-demo وانتقل إليه. سيحتوي هذا المجلد على بلاي بوكس الخاص بك.
2. افتح محرر النص المفضل لديك وأنشئ واحفظ ملفًا بالاسم ansible-windows.yml في الدليل ~/ansible-windows-demo.
تُكتب بلاي بوكس أنسيبل بلغة الـ YAML
3. الآن، انسخ البلاي بوكس التالي إلى ملف ansible-windows.yml لإنشاء مهمة واحدة. سيُنفذ هذا البلاي بوكس أمر netstat على Windows باستخدام وحدة win_command من Ansible على جميع العُقد ضمن مجموعة العُقد windows
.
يُنفذ وحدة الأمر win_command الأوامر على الخادم البعيد الذي يعمل بنظام ويندوز. لا تسمح بتنفيذ الأوامر التي تتضمن متغيرات مثل الرموز الخاصة وكسر السطر ورمز الأكبر من، وما إلى ذلك.
4. قم بتنفيذ كتيب العمل ansible-windows.yml، الذي يُنفذ المهمة على الخادم البعيد من خلال تنفيذ الأمر التالي.
إذا كان كل شيء على ما يرام، يجب أن ترى ناتجًا مشابهًا للمثال أدناه.

تشغيل الأوامر عن بُعد باستخدام وحدة win_shell
قمتَ بإنشاء كتيب عمل لتشغيل أمر cmd.exe عن بُعد (netstat
) على العُقَد المُدارة بنظام Windows
في المثال السابق. لنرفع الرهان قليلاً ونقوم الآن بتشغيل الأوامر بواسطة وحدة win_shell.
بشكل افتراضي، تعمل وحدة win_shell بواسطة PowerShell على خادم ويندوز
على جهاز العمل الخاص بك الذي يعمل بنظام ويندوز المحلي:
1. أولاً، افتح محرر النصوص المفضل لديك على جهاز العمل الخاص بك الذي يعمل بنظام Windows المحلي وأنشئ نصًا تجريبيًا لسكربت PowerShell وانسخ الشيفرة التالية إليه، ثم احفظه بالاسم one.ps1. سيقوم هذا البرنامج التعليمي بحفظ السكربت باسم ~\one.ps1.
الشيفرة أدناه تنشئ ملف نصي فارغ يسمى test2.txt في دليل C:\temp.
2. انسخ سكربت PowerShell one.ps1 إلى عقد الويندوز الخاص بك باستخدام الطريقة المفضلة لديك. سيفترض هذا البرنامج التعليمي أنك قمت بنسخ السكربت one.ps1 إلى المجلد C:\Temp على كل عقد ويندوز.
3. بمجرد أن يكون سكربت PowerShell التجريبي على العقد(الأجهزة) الخاص بويندوز، قم بالاتصال بجهاز تحكم Ansible وافتح محرر النصوص المفضل لديك مرة أخرى. هذه المرة، قم بإنشاء سكربت آخر واحفظه كـ ansible-windows-shell.yml في نفس الدليل ~/ansible-windows-demo.
4. انسخ والصق السكربت التالي في ملف ansible-windows-shell.yml. هذا السكربت سيقوم بتشغيل مهمتين لتوضيح وحدة win_shell. إنه يستدعي سكربت PowerShell الذي تم نسخه للتو من الخطوة رقم 2 ويضع الشيفرة مباشرة في السكربت التوضيحي ليظهر أنه لا حاجة للسكربت على الإطلاق.
لتمرير عدة أسطر من الشيفرة PowerShell إلى وحدة win_shell، استخدم الحرف
|
الخاص بالأنبوب.
5. الآن، استدعِ الدفتر الأمر الثاني ansible-windows-shell.yml، الذي يُنفَذ على الجهاز البعيد ولكن بواسطة PowerShell.

6. إذا لزم الأمر، على جهاز العمل الخاص بك الذي يعمل بنظام التشغيل Windows المحلي، تحقق من أن الدفتر الأمر قام بتنفيذ النص السابق وكود PowerShell في الدفتر الأمر.
إذا نجح دفتر الأمر Ansible، يجب أن يعيد PowerShell عبارتين True
مشيرًا إلى وجود الملفات الآن.
الاستنتاج
في هذا البرنامج التعليمي، لقد تعلمت كيفية إعداد أول جهاز تم إدارته بنظام Windows في Ansible. على الرغم من أن Ansible كان يُعرف تقليديًا كأداة Linux، يمكن استخدامه بسهولة أيضًا لأجهزة Windows!
ما هي الدفاتر الأمر والوحدات لنظام Windows التي ستبدأ باستخدامها لإدارة Windows باستخدام Ansible؟