لفترة من الزمن، كانت الطريقة المثالية لإعادة تشغيل خوادم لينكس عبر آنسبل هي باستخدام تشكيلة من أداتي shell لتنفيذ أمر إعادة التشغيل، بالإضافة إلى استخدام wait_for لإيقاف تنفيذ باقي المهام وانتظار انتهاء إعادة تشغيل الخادم حتى تتم استعادة الإتصال معه. وبالمناسبة، هذه هي الطريقة الرسمية التي يتم تدريسها في مقرر آنسبل DO407 Automation with Ansible من شركة ريدهات (يتم استخدام نسخة آنسبل 2.3 حتى الآن في المقرر). هذه الطريقة تتم بالشكل التالي:
--- - name: Reboot and wait until the server is up hosts: server1 tasks: - name: reboot machine shell: sleep 2 && shutdown -r now "Ansible triggered reboot" async: 1 poll: 0 ignore_errors: true - name: Wait for server to come back wait_for: host: "{{ inventory_hostname }}" state: started delay: 30 timeout: 300 port: 22 delegate_to: localhost
أداة reboot الجديدة في نسخة آنسبل 2.7:
قبل بضعة أيام، تم إصدار النسخة رقم 2.7 من آنسبل والتي تحمل العديد من الإضافات والتحسينات، منها أداة reboot الجديدة والتي تقوم باستبدال الطريقة السابقة في إعادة تشغيل الخوام.
استخدام الأداة الجديدة سهل جدًا، كالتالي:
--- - name: reboot the machine using default parameters reboot:
انتهينا! وأنا أعني ذلك! بالتأكيد هذا المثال يبسط العملية واستخدام الأداة، ولكنها كل ماتحتاج إليه للبدء في استخدام الطريقة الجديدة. هنالك العديد من الخيارات التي توفرها الأداة مثل تحديد رسالة يتم نشرها لجميع المستخدمين قبل إعادة التشغيل، تحديد مدة قبل أو بعد إعادة التشغيل بالإضافة إلى تحديد أمر معين يتم تنفيذه بعد إعادة التشغيل للتأكد من أن العملية تمت بشكل صحيح.
هل هذه نهاية أداة wait_for؟
بالتأكيد لا! صحيح أن الأداة الجديدة تقوم باستبدال الطريقة القديمة، ولكننا لازلنا بحاجة إلى أداة wait_for في العديد من المواقف التي لا تشمل الحاجة إلى إعادة تشغيل الخادم. إن كنت تقوم بإدارة موزعات الحِمل Load Balancers على سبيل المثال، فستحتاج إليها لمعرفة إمكانية الوصول إلى الخدمات خلفها أو التأكد من وجود أو خلاء اتصالات من المستخدمين إليها قبل تنفيذ باقي المهام.
توفر المدونة الرسمية لآنسبل شرح رائع عن تفاصيل وطريقة عمل الأداة. أيضًا، أنصح بقراءة الدليل الخاص بأداتي reboot و wait_for لمعرفة باقي الخيارات المتوفرة بهما والمزيد من الأمثل حول طريقة الاستخدام.