بديل Rundeck

أتمتة الـ runbooks من دون JVM أو قاعدة بيانات SQL أو مهام تُؤلَّف عبر واجهة رسومية.

Dagu هو بديل Rundeck لفرق العمليات التي تريد مهام مجدولة، و runbooks عند الطلب، و Web UI من ملف ثنائي واحد صغير. تعيش تعريفات المهام في Git بصيغة YAML بدلًا من أن تبقى خلف وحدة تحكم، وتُخزَّن الحالة في ملفات بدلًا من MySQL أو Postgres، ويجري الوصول إلى الخوادم القائمة عبر SSH أو عبر عمال موسومين. تتناول هذه الصفحة أيضًا مسار الترحيل والمواضع التي يبقى فيها Rundeck الخيار الأقوى.

الـ runbook في ملف YAML واحد
# restart-app.yaml
params:
  - name: host
    default: app01.internal
 
ssh:
  user: ops
  host: ${params.host}
  key: ~/.ssh/ops_key
 
steps:
  - id: drain
    run: /opt/app/bin/drain --wait
 
  - id: restart
    run: sudo systemctl restart app
    depends: [drain]
 
  - id: health_check
    run: curl -fsS http://localhost:8080/healthz
    retry_policy:
      limit: 5
      interval_sec: 10
    depends: [restart]
 
handler_on:
  failure:
    run: ./scripts/notify-oncall.sh

Execution order

drainsshrestartsshhealth_check5 retries

ملف ثنائي واحد بحالة مخزّنة في ملفات، من دون JVM ولا قاعدة بيانات SQL

المهام ملفات YAML خاضعة للتحكم بالإصدارات وتُراجَع مثل أي تغيير آخر

خطوات SSH وعمال موسومون يصلون إلى الخوادم القائمة

SSO و RBAC وسجلات التدقيق بسعر معلَن لكل خادم

At a glance

Rundeck مقابل Dagu في أتمتة العمليات

Runtime
Dagu

ملف ثنائي واحد بحالة مخزّنة في ملفات؛ الطوابير والعمال اختياريان.

Rundeck

خدمة Java إضافةً إلى MySQL أو Postgres في الإنتاج.

طريقة التأليف
Dagu

YAML تصريحي يُراجَع في Git.

Rundeck

وحدة تحكم الويب أولًا؛ وتصدير YAML ومزامنة SCM مسار ثانوي.

التنفيذ عن بُعد
Dagu

خطوات SSH، أو عمال موسومون يتصلون اتصالًا صادرًا عبر gRPC محمي بـ mTLS.

Rundeck

توزيع على العقد من مخزون قائم على نموذج الموارد عبر SSH أو WinRM.

التفويض
Dagu

أدوار على مستوى النظام، مع SSO وسجلات التدقيق في الفئة المرخّصة.

Rundeck

سياسات ACL دقيقة لكل مشروع ولكل مهمة.

الترخيص
Dagu

مجاني بعدد غير محدود من الخوادم؛ والخطط المدفوعة مرخّصة لكل خادم Dagu مع عمال غير محدودين.

Rundeck

نواة مفتوحة المصدر؛ و Process Automation التجاري بتسعير قائم على عروض الأسعار.

التوافر
Dagu

مثيل واحد من المجدول؛ والتوافر العالي تصميم نشر تتولاه بنفسك.

Rundeck

توفر الفئة التجارية تكوينات عنقودية.

In depth

Where each tool fits

01

أبقِ الـ runbook واستغنِ عن المكدس

يعمل Rundeck كخدمة Java أمام قاعدة بيانات SQL، وتُعرَّف المهام لكل مشروع عبر وحدة تحكم الويب. أما Dagu فيُبقي المفاهيم التشغيلية نفسها داخل عملية واحدة تخزّن حالتها في ملفات.

  • المهام تصبح ملفات DAG، وخطوات المهمة تصبح خطوات، ومعالجات الأخطاء تقابل handler_on.failure.
  • خيارات المهمة تقابل params: مدخلات ذات أنواع وقيم افتراضية، تُمرَّر قيمها وقت التشغيل من Web UI أو CLI أو API.
  • لا حاجة إلى تحديد حجم MySQL أو Postgres والنسخ الاحتياطي لهما، ولا إلى ضبط ذاكرة JVM؛ جهاز افتراضي صغير يكفي لتشغيله.
02

المهام بالكود لا بنقرات وحدة التحكم

يستطيع Rundeck تصدير التعريفات ومزامنتها عبر إضافة SCM لديه، لكن وحدة التحكم تبقى سطح التأليف الأساسي. يعكس Dagu ذلك: ملف YAML في مستودعك هو التعريف نفسه.

  • كل مهمة ملف YAML في Git، فتصل التغييرات كفروق قابلة للمراجعة بدلًا من تعديلات في وحدة التحكم.
  • يفحص dagu validate التعريفات المولَّدة والمكتوبة يدويًا في CI قبل أن تصل إلى المجدول.
  • تبقى Web UI لأغراض التشغيل: بدء عمليات التشغيل بمعاملات، ومتابعة السجلات، وإعادة المحاولة، وتعليق الجداول.
03

الوصول إلى الخوادم القائمة من دون تثبيت وكيل

يوزّع Rundeck الأوامر على العقد من مخزون قائم على نموذج الموارد. يغطي Dagu المساحة نفسها بآليتين: SSH للمضيفات من دون وكيل، والعمال حيث يكون منفّذ مقيم هو الأنسب.

  • استخدم منفّذ SSH لتشغيل الخطوات على مضيفات Linux و UNIX القائمة من دون وكيل مقيم.
  • شغّل dagu worker على الأجهزة التي تحتاج إلى تنفيذ محلي، ووجّه الخطوات إليها عبر تسميات worker_selector.
  • يتصل العمال اتصالًا صادرًا عبر gRPC محمي بـ mTLS، فلا تحتاج الشبكات المجزّأة إلى فتح منافذ واردة.
04

افصل بين من يشغّل المهام ومن يعدّل تعريفاتها

النشر الكلاسيكي لـ Rundeck يسلّم جزءًا آمنًا من العمليات إلى مجموعة أوسع. وتغطي فئة الاستضافة الذاتية المرخّصة في Dagu هذا الفصل بالأدوار و SSO وسجلات التدقيق.

  • دور operator يستطيع بدء عمليات التشغيل وإيقافها لكنه لا يعدّل التعريفات؛ و viewer للقراءة فقط؛ بينما يستطيع developer و manager تعديل مسارات العمل.
  • سجّل الدخول عبر مزوّد الهوية الحالي لديك باستخدام OIDC بدلًا من صيانة دليل مستخدمين ثانٍ.
  • توثّق سجلات التدقيق النشاط الإداري والأنشطة ذات الصلة بالأمان للمراجعة.
05

سعر معلَن بدلًا من مكالمة مبيعات

أصبحت الفئة التجارية من Rundeck هي PagerDuty Process Automation، بتسعير قائم على عروض الأسعار. أما الفئة المجتمعية من Dagu فمجانية بعدد غير محدود من الخوادم والعمال، وللفئة المرخّصة سعر معلَن لكل خادم.

  • تشمل الفئة المجتمعية محرك التنسيق كاملًا، و Web UI، وجدولة cron، ومنفّذات Docker و SSH و HTTP.
  • تبدأ الاستضافة الذاتية المرخّصة من 500 دولار في السنة مقابل ثلاثة تراخيص خوادم، وتضيف SSO و RBAC وسجلات التدقيق وتوجيه الحوادث والدعم عبر البريد الإلكتروني.
  • يبقى عدد العمال غير محدود في كل الخطط، فإضافة مضيف تنفيذ جديد لا تغيّر عدد التراخيص أبدًا.
06

المواضع التي يكون فيها Rundeck الخيار الأقوى

المقارنة التي لا تسرد إلا مواطن التفوق لا تفيد أثناء التقييم. هذه هي المواضع التي ينبغي فيها لفريق يستخدم Rundeck أن يتوقع عملًا إضافيًا أو أن يبقى حيث هو.

  • مخزون العقد في Rundeck أغنى: تستطيع مصادر نموذج الموارد ومرشّحات العقد نشر أمر واحد على مئات المضيفات. أما Dagu فيوجّه الخطوات إلى مضيفات SSH أو عمال موسومين، وليس لديه مفهوم مخزون الأسطول.
  • تستطيع سياسات ACL في Rundeck على مستوى المشروع والمهمة تسليم مهمة واحدة بعينها ذات معاملات إلى مجموعة مكتب المساعدة. أما أدوار Dagu فتسري على مستوى النظام كله، لا لكل مهمة.
  • يقدّم Process Automation التجاري تكوينات عنقودية للتوافر العالي، ومنظومة الإضافات لديه أكبر، بما فيها منفّذات عقد WinRM وإضافات الإشعارات.

FAQ

Practical questions before adopting Dagu

هل Dagu بديل مباشر لـ Rundeck؟

لا. تتقابل المفاهيم بوضوح: المهام تصبح ملفات DAG، وخطوات المهمة تصبح خطوات، والخيارات تصبح params، ومعالجات الأخطاء تصبح handler_on.failure. لكن لا توجد أداة استيراد، ولا يوجد مقابل مباشر لنموذج مرشّحات العقد في Rundeck. الترحيل يعني إعادة كتابة كل مهمة كملف YAML، وهو عمل يجري بشكل شبه آلي للمهام القائمة على الأوامر.

هل يظل بإمكان المستخدمين تشغيل المهام بمعاملات من الواجهة؟

نعم. تعلن params مدخلات ذات أنواع وقيم افتراضية، ويمكن بدء التشغيل من Web UI أو CLI أو API مع تمرير القيم وقت التشغيل. ما لا يملكه Dagu هو ACL على مستوى المهمة كما في Rundeck لإتاحة مهمة واحدة بعينها لمجموعة؛ فالأدوار تسري على مستوى النظام كله.

كيف يشغّل Dagu الأوامر على خوادم كثيرة؟

بطريقتين. يشغّل منفّذ SSH الخطوات على مضيفات من دون وكيل، وفي الوضع الموزّع تعمل على الأجهزة عمالٌ يسحبون الخطوات المطابقة لتسميات worker_selector. لا يوجد مخزون قائم على نموذج الموارد؛ والنشر على أسطول كبير يُعبَّر عنه بخطوات متوازية أو بسكربت مغلِّف.

هل يحتاج Dagu إلى قاعدة بيانات كما يحتاج Rundeck؟

لا. تاريخ التشغيل والسجلات وحالة الطوابير كلها ملفات على القرص. وهذا أيضًا ما يجعل العمل في الشبكات المغلقة مباشرًا: ملف ثنائي واحد، من دون JVM، ومن دون خدمات خارجية يلزم الوصول إليها.

ما الذي يحل محل الجداول و webhooks في Rundeck؟

جداول cron بدعم المناطق الزمنية مدمجة، ويمكن تشغيل العمليات من الخارج عبر API أو webhook مع إتاحة الحمولة لمسار العمل. يُحد التزامن افتراضيًا لكل مسار عمل، وتستخدم الحدود المشتركة طوابير مسماة.

Next step

Start with one workflow.

Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.