مقدمة
إدارة التكوين هي عملية التعامل مع التغييرات على نظام بطريقة تضمن النزاهة على مدار الزمن، وعادة ما تتضمن أدوات وعمليات تسهل التشغيل الآلي والمراقبة. على الرغم من أن هذا المفهوم لم ينشأ في صناعة التكنولوجيا المعلوماتية، إلا أن المصطلح يستخدم على نطاق واسع للإشارة إلى إدارة تكوين الخوادم.
في سياق الخوادم، تُعرف إدارة التكوين أيضًا بشكل شائع باسم التشغيل الآلي في التكنولوجيا المعلوماتية أو تنسيق الخوادم. كلا المصطلحين يسلطان الضوء على الجوانب العملية لإدارة التكوين وقدرة التحكم في أنظمة متعددة من خادم مركزي.
سيرشدك هذا الدليل إلى فوائد استخدام أداة إدارة تكوين لأتمتة إعداد بنية الخوادم الخاصة بك، وكيف يمكن لأداة مثل أنسيبل أن تساعدك في ذلك.
فوائد استخدام أداة إدارة التكوين
هناك العديد من أدوات إدارة التكوين المتاحة في السوق، تتفاوت في مستويات التعقيد وأنماط هيكلية متنوعة. على الرغم من أن كل من هذه الأدوات لها خصائصها الخاصة وتعمل بطرق مختلفة قليلاً، إلا أن جميعها توفر نفس الوظيفة: التأكد من أن حالة النظام تتطابق مع الحالة الموصوفة بمجموعة من برامج توفير النصوص.
العديد من الفوائد التي تجلبها إدارة التكوين للخوادم تأتي من القدرة على تعريف البنية التحتية ككود. هذا يمكنك من:
- استخدام نظام التحكم بالنسخ لتتبع أي تغييرات في البنية التحتية
- إعادة استخدام برامج توفير النصوص لمختلف بيئات الخادم، مثل التطوير والاختبار والإنتاج
- مشاركة برامج توفير النصوص بين الزملاء لتسهيل التعاون في بيئة تطوير موحدة
- تبسيط عملية تكرار الخوادم، مما يسهل التعافي من الأخطاء الحرجة
بالإضافة إلى ذلك، تقدم أدوات إدارة التكوين لك طريقة للتحكم في واحد إلى مئات الخوادم من موقع مركزي، مما يمكن أن يحسن بشكل كبير كفاءة ونزاهة البنية التحتية للخادم.
نظرة عامة على Ansible
Ansible هي أداة إدارة تكوين حديثة تسهل مهمة إعداد وصيانة الخوادم البعيدة، بتصميم بسيط يهدف إلى تمكين المستخدمين من البدء والعمل بسرعة.
يكتب المستخدمون برامج Ansible لتوفير البيانات بتنسيق YAML، وهو معيار سهل الاستخدام لتسلسل البيانات لا يرتبط بلغة برمجة معينة. هذا يمكّن المستخدمين من إنشاء برامج توفير معقدة بشكل أكثر بديهية مقارنة بالأدوات المماثلة في نفس الفئة.
لا يتطلب Ansible تثبيت أي برامج خاصة على العُقد التي سيتم إدارتها باستخدام هذه الأداة. يتم إعداد جهاز تحكم ببرنامج Ansible، الذي بدوره يتواصل مع العُقد عبر SSH القياسي.
كأداة لإدارة التكوين وإطار عمل الأتمتة، يغلف Ansible جميع الميزات الشائعة الموجودة في أدوات الفئة نفسها، مع الحفاظ على التركيز القوي على البساطة والأداء:
سلوك التعريفية
يتتبع Ansible حالة الموارد في الأنظمة المدارة لتجنب تكرار المهام التي تم تنفيذها من قبل. إذا تم تثبيت حزمة ما، فلن يحاول تثبيتها مرة أخرى. الهدف هو أنه بعد كل تنفيذ للتوفير يصل النظام (أو يحافظ) على الحالة المرغوبة، حتى لو تم تشغيله عدة مرات. هذا ما يميز Ansible وأدوات إدارة التكوين الأخرى بأن لديها سلوك التعريفية. عند تشغيل مخطط اللعبة، سترى حالة كل مهمة قيد التنفيذ وما إذا كانت المهمة أجرت تغييرًا في النظام أم لا.
دعم للمتغيرات والشروط والحلقات
عند كتابة برامج Ansible للأتمتة، يمكنك استخدام المتغيرات والشروط والحلقات من أجل جعل أتمتتك أكثر تنوعًا وكفاءة.
حقائق النظام
تجمع Ansible مجموعة من المعلومات التفصيلية حول العقد المدارة، مثل الواجهات الشبكية ونظام التشغيل، وتوفرها كمتغيرات عامة تسمى حقائق النظام. يمكن استخدام الحقائق داخل الكتب لجعل أتمتتك أكثر تنوعًا وقابلية للتكيف، حيث تتصرف بشكل مختلف بناءً على النظام الذي يتم توفيره.
نظام القوالب
تستخدم Ansible نظام قوالب Jinja2 في Python للسماح بالتعبيرات الديناميكية والوصول إلى المتغيرات. يمكن استخدام القوالب لتسهيل إعداد ملفات التكوين والخدمات. على سبيل المثال، يمكنك استخدام قالب لإعداد مضيف افتراضي جديد داخل Apache، مع إعادة استخدام نفس القالب لتثبيتات خادم متعددة.
دعم للامتدادات والوحدات
يأتي Ansible مع مئات الوحدات المدمجة لتسهيل كتابة الأتمتة للمهام الإدارية الشائعة، مثل تثبيت الحزم باستخدام apt
ومزامنة الملفات باستخدام rsync
، وكذلك للتعامل مع البرامج الشهيرة مثل أنظمة قواعد البيانات (مثل MySQL، PostgreSQL، MongoDB، وغيرها) وأدوات إدارة التبعيات (مثل composer
لـ PHP، gem
لـ Ruby، npm
لـ Node، وغيرها). بالإضافة إلى ذلك، هناك طرق متنوعة يمكنك من خلالها توسيع Ansible: المكونات الإضافية والوحدات هي خيارات جيدة عندما تحتاج إلى وظيفة مخصصة غير موجودة افتراضيًا.
يمكنك أيضًا العثور على وحدات ومكونات إضافية تابعة لجهات خارجية في بوابة Ansible Galaxy.
التعرف على مفاهيم Ansible
سنلقي الآن نظرة على مصطلحات ومفاهيم Ansible لمساعدتك على التعرف على هذه المصطلحات حيثما تظهر طوال هذه السلسلة.
عقدة التحكم
عقدة التحكم هي النظام حيث يتم تثبيت وإعداد Ansible للاتصال بخادمك. يمكنك أن تمتلك عدة عقد تحكم، وأي نظام قادر على تشغيل Ansible يمكن إعداده كعقدة تحكم، بما في ذلك الحواسيب الشخصية أو الأجهزة المحمولة التي تعمل بنظام تشغيل يعتمد على Linux أو Unix. حتى الآن، لا يمكن تثبيت Ansible على أنظمة Windows، ولكن يمكن تجاوز هذا القيد من خلال إعداد جهاز افتراضي يعمل بنظام Linux وتشغيل Ansible من هناك.
العقد المدارة
الأنظمة التي تتحكم فيها باستخدام Ansible تسمى العقد المدارة. يتطلب Ansible أن تكون العقد المدارة قابلة للوصول عبر SSH، وأن يكون Python 2 (الإصدار 2.6 أو أحدث) أو Python 3 (الإصدار 3.5 أو أحدث) مثبتًا.
يدعم Ansible مجموعة متنوعة من أنظمة التشغيل بما في ذلك خوادم Windows كعقد مدارة.
المخزن
ملف المخزون يحتوي على قائمة بالمضيفين الذين ستديرهم باستخدام Ansible. على الرغم من أن Ansible تنشئ عادةً ملف مخزون افتراضي عند التثبيت، يمكنك استخدام مخازن لكل مشروع لتحقيق فصل أفضل بين البنية التحتية الخاصة بك وتجنب تنفيذ الأوامر أو الكتيبات على الخادم الخطأ بالخطأ. عادةً ما يتم إنشاء المخازن الثابتة كملفات .ini
، ولكن يمكنك أيضًا استخدام مخازن تُنشأ ديناميكيًا مكتوبة بأي لغة برمجة قادرة على إرجاع JSON.
المهام
في Ansible، المهمة هي وحدة عمل فردية لتنفيذها على عقدة مُدارة. كل إجراء يتم تنفيذه يُعرّف كمهمة. يمكن تنفيذ المهام كإجراء فردي من خلال الأوامر المباشرة، أو تضمينها في كتيب كجزء من البرنامج النصي للأتمتة.
كتيب
كتيب يحتوي على قائمة مرتبة من المهام، وبعض التوجيهات الأخرى للإشارة إلى المضيفين الهدف من تلك الأتمتة، وما إذا كان سيتم استخدام نظام تصعيد الصلاحية لتنفيذ تلك المهام، وأقسام اختيارية لتعريف المتغيرات أو تضمين الملفات. ينفذ Ansible المهام بترتيب متسلسل، وتنفيذ كتيب كامل يسمى لعبة. يتم كتابة الكتيبات بتنسيق YAML.
معالجون
معالجون يستخدمون لتنفيذ إجراءات على خدمة، مثل إعادة تشغيل أو إيقاف خدمة تعمل بنشاط على نظام العقدة المدارة. عادةً ما يتم تشغيل المعالجون بواسطة المهام، وتنفيذهم يحدث في نهاية اللعبة، بعد انتهاء جميع المهام. بهذه الطريقة، إذا تم تشغيل إعادة تشغيل لخدمة من قبل أكثر من مهمة واحدة، على سبيل المثال، سيتم إعادة تشغيل الخدمة مرة واحدة فقط وبعد انتهاء جميع المهام. على الرغم من أن السلوك الافتراضي للمعالج أكثر كفاءة وعمومًا أفضل ممارسة، إلا أنه من الممكن أيضًا إجبار تنفيذ المعالج فورًا إذا كان ذلك مطلوبًا من قبل مهمة.
أدوار
دور هو مجموعة من اللعب والملفات ذات الصلة منظمة في هيكل محدد مسبقًا يعرفه Ansible. تسهيل الأدوار إعادة استخدام وإعادة استخدام اللعب إلى حزم قابلة للمشاركة من التشغيل التلقائي الدقيق لأهداف محددة، مثل تثبيت خادم ويب، تثبيت بيئة PHP، أو إعداد خادم MySQL.
خاتمة
Ansible هو أداة أتمتة IT بسيطة التصميم تتميز بمنحنى تعلم يسير، وذلك يعود جزئيًا إلى استخدامها لـ YAML في البرامج النصية لتوفير الخدمات. لديها عدد كبير من الوحدات المدمجة التي يمكن استخدامها لتجريد المهام مثل تثبيت الحزم والعمل مع القوالب. متطلبات البنية التحتية المبسطة وبناء الجملة المتاح يمكن أن تكون مناسبة جيدة لأولئك الذين يبدأون في إدارة التهيئة.
في الجزء التالي من هذه السلسلة، سنرى كيفية تثبيت والبدء في استخدام Ansible على خادم Ubuntu 20.04.