كثيرًا ما يُقارَن Terraform بـ Ansible، لكنّهما في الأصل يحلّان مشكلتين مختلفتين. فهم الفرق يساعدك على اختيار الأداة الصحيحة — أو استخدامهما معًا. تبني هذه الصفحة على ما هي البنية التحتية كرمز؟.
مشكلتان مختلفتان
- Terraform — توفير البنية (Provisioning): يُنشئ ويدير موارد البنية التحتية نفسها: الخوادم، الشبكات، قواعد البيانات. يجيب عن: «ما البنية التي أريدها؟».
- Ansible — إدارة الإعدادات (Configuration Management): يضبط ما داخل الخوادم بعد وجودها: تثبيت الحزم، نسخ الملفّات، تشغيل الخدمات. يجيب عن: «كيف أُعدّ هذا الخادم؟».
تصريحي مقابل إجرائي
- Terraform تصريحيّ: تصف الحالة النهائية، ويحسب هو الفارق للوصول إليها، معتمدًا على الحالة (State).
- Ansible إجرائيّ (غالبًا): تصف خطوات تُنفَّذ بالترتيب على الخوادم، ولا يحتفظ بحالة بالطريقة نفسها.
جدول المقارنة
| Terraform | Ansible | |
|---|---|---|
| الغرض الأساسي | توفير البنية | إدارة إعدادات الخوادم |
| النهج | تصريحيّ | إجرائيّ غالبًا |
| الحالة | يحتفظ بحالة | بلا حالة بالمعنى نفسه |
| قوّته | إنشاء/إدارة موارد السحابة | ضبط وتهيئة الأنظمة |
هل هما متنافسان أم متكاملان؟
غالبًا متكاملان: نمط شائع هو أن يوفّر Terraform الخوادم والشبكات، ثم يضبط Ansible ما بداخلها (البرمجيات والإعدادات). كلٌّ في مجال قوّته.
كيف تختار؟
- تحتاج إنشاء وإدارة موارد سحابية؟ → Terraform.
- تحتاج تهيئة وضبط أنظمة قائمة؟ → Ansible.
- تحتاج الاثنين؟ → استخدمهما معًا، كلٌّ لدوره.
الخطوات التالية
للمقارنة مع أداة IaC أخرى راجع Terraform مقابل CloudFormation، والأساس في ما هو Terraform؟.