أتمتة البنية التحتية باستخدام Ansible
أصبحت أتمتة البنية التحتية جزءًا لا يتجزأ من دورة DevOps الحديثة. فالإعداد اليدوي للخوادم، وتثبيت الحزم، ونشر التطبيقات، وتوسيع الموارد يتطلب وقتًا طويلاً. هذا الأسلوب عرضة للأخطاء البشرية ويقلل من قابلية تكرار العمليات. لحل هذه المشكلات، نستخدم Ansible — أداة أتمتة قوية.
Ansible هي أداة مفتوحة المصدر لأتمتة مهام إدارة الأنظمة. وهي مكتوبة بلغة Python ولا تتطلب تثبيت وكلاء على الأجهزة المُدارة. لوصف التكوينات، يُستخدم تنسيق YAML وبروتوكول SSH للاتصال بالخوادم. بفضل تركيبها النحوي البسيط والقابل للقراءة، انتشرت Ansible على نطاق واسع بين الشركات الكبرى، بما في ذلك NASA وTwitter وRed Hat.
أساسيات العمل مع Ansible
التعريف ومبادئ العمل
تعمل Ansible كأداة لأتمتة التكوينات، وإدارة الخوادم، وتنسيق العمليات، ونشر التطبيقات. أساس البنية هو لغة Python، ولوصف المهام يُستخدم YAML كلغة خاصة بالمجال (DSL).
المزايا الرئيسية
تضمن بنية Ansible الخالية من الوكلاء سهولة النشر وتقليل التكاليف الإضافية للصيانة. استخدام بروتوكول SSH للاتصال بالأجهزة البعيدة يضمن أمان نقل البيانات. بناء جملة YAML يجعل ملفات التكوين قابلة للقراءة البشرية وسهلة الصيانة.
قابلية التوسع من خلال وحدات Python تسمح بإنشاء حلول مخصصة لمهام محددة. دعم أنظمة التشغيل Windows وLinux يضمن التنوع في الاستخدام في البيئات غير المتجانسة.
عملية التثبيت
يتم تثبيت Ansible عبر مدير الحزم pip:
pip install ansible
طريقة بديلة للتثبيت عبر مدير الحزم النظامي:
sudo apt install ansible
بنية النظام ومكوناته
المكونات الأساسية لـ Ansible
| المكون | الوظيفة | الوصف |
|---|---|---|
| Inventory | قائمة الأجهزة المُدارة | يحتوي على معلومات عن الخوادم وتجميعها |
| Playbook | مجموعة مهام في ملف YAML | يصف تسلسل العمليات المطلوب تنفيذها |
| Module | عملية منفردة | ينفذ إجراءات محددة: نسخ، تثبيت حزم |
| Role | هيكل منطقي قابل لإعادة الاستخدام | يجمع المهام ذات الصلة في كتل منطقية |
| Variable | متغيرات وقوالب | يوفر تخصيص التكوينات عبر المعاملات |
| Plugin | توسيع السلوك | يضيف وظائف عبر إضافات callback وconnection |
هيكل Inventory
Inventory هو ملف يصف الأجهزة المُدارة وتجميعها:
[web]
web1 ansible_host=192.168.1.10
web2 ansible_host=192.168.1.11
[database]
db1 ansible_host=192.168.1.20
db2 ansible_host=192.168.1.21
يمكن أن يحتوي Inventory على متغيرات للمجموعات والأجهزة الفردية. هذا يسمح بتخصيص سلوك Ansible للخوادم المختلفة دون تغيير ملفات playbook الرئيسية.
إنشاء وهيكل Playbook
أساسيات العمل مع Playbook
Playbook هو سيناريو بتنسيق YAML يصف المهام وترتيب تنفيذها. يتكون كل playbook من play واحد أو أكثر، والتي تحدد الإجراءات لمجموعات محددة من الأجهزة.
الهيكل الأساسي لـ playbook يشمل العناصر التالية:
- name: تثبيت