اذهب إلى المحتوى

كيف تساعد Ansible على أتمتة مهام بسيطة لإدارة حواسيب المنزل


Heidi Melhem

يعد Ansible أداة لأتمتة المهام التقنية البسيطة، وسنتناول في هذا المقال كيفية الاستفادة منه لإعادة استخدام الحواسيب المحمولة القديمة وإدارتها.

المهمة

تمتلك طفلة ذات سبع سنوات جهاز Dell Mini 9 مزود بنظام أوبنتو وعندما أمضت عليه الكثير من الوقت في اللعب وسماع الأغاني واكتشاف برامج جديدة مسلية ومفيدة، رغبت أختها الصغرى ذات الست سنوات بالحصول على جهاز مشابه، فاستعان الأب بأداة Ansible لإنشاء نسخة مطابقة تمامًا من حيث إعدادات الضبط والأداء والمظهر على جهاز Dell D620 قديم، مع توثيق خطوات العمل لإتاحة إمكانية تكرارها بسهولة في حال الحاجة لها مستقبلًا عند توقف الجهاز عن العمل أو عبث الطفلة بإعدادات الجهاز أو أي خطأ من هذا النوع.

آلية العمل

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

تساعد قابلية قراءة ملف YAML من Ansible على توضيح الأمور أثناء عملية تحسين الأنظمة.

مرحلة التمهيد bootstrap

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

$ ansible-playbook bootstrap.yml -i '192.168.0.100,' -u jfarrell -Kk

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

مرحلة إعداد الحسابات

يتم استخدام سكربت YAML لإعداد حسابات جميع المستخدمين أو إعادة تعيينها، كما يمكن استخدامها لإصلاح الحسابات المقفلة، ويحافظ على ثبات واتساق معرّفات هوية المستخدم UID ومعرّفات المجموعة GID ضمن العدد الصغير من الأجهزة التي لدينا، ولا حاجة لإعداد خدمة معلومات الشبكة أو استيثاق LDAP كون عدد الحسابات صغير جدًا، وفيما يلي قسم إعداد الحسابات في السكربت:

---
- name: Set user accounts
  hosts: all
  gather_facts: false
  become: yes
  vars_prompt:
    - name: passwd
      prompt: "Enter the desired ansible password:"
      private: yes

  tasks:
  - name: Add child 1 account
    user:
      state: present
      name: child1
      password: "{{ passwd | password_hash('sha512') }}"
      comment: Child One
      uid: 888
      group: users
      shell: /bin/bash
      generate_ssh_key: yes
      ssh_key_bits: 2048
      update_password: always
      create_home: yes

يطلب قسم vars_prompt كلمة مرور ويتم وضعها في تحويل Jinja2 لإنتاج تعمية كلمة المرور المطلوبة، هذا يعني عدم الحاجة إلى توفير القيمة الخاصة بكلمات المرور في الشيفرة في ملف YAML ويمكن تشغيله لتغيير كلمات المرور حسب الحاجة.

مرحلة تثبيت البرنامج

لا يزال ملف YAML الخاص بتثبيت البرنامج قيد التطوير ويحتوي على مجموعة أدوات أساسية تساعد مدير النظام والأمور التي يحتاجها المستخدمون.

يقوم بالتأكد من تثبيت نفس واجهة المستخدم الرسومية GUI وجميع البرامج والألعاب وملفات الوسائط نفسها على كل جهاز، وفي ما يلي مقتطف صغير من البرنامج:

- name: Install kids software
    apt:
      name: "{{ packages }}"
      state: present
    vars:
      packages:
      - lxde
      - childsplay
      - tuxpaint
      - tuxtype
      - pysycache
      - pysiogame
      - lmemory
      - bouncy

الخلاصة

كتب الأب سكربتات Ansible الثلاثة السابقة بواسطة جهاز وهمي واختبرها على الجهاز الأول D620 ثم حولها بسهولة إلى الجهاز الثاني Mini 9 ليحقق التماثل في كلا النظامين، وكان أداء النظامين متشابه لفترة من الوقت ولكن بعدها اكتشفت الطفلة الكبرى ضعف أداء جهازها لذا قام الأب باستبداله بجهاز D620 آخر قديم فقام بتحسينه عن طريق استبدال بطارية BIOS وإضافة SSD جديد وترقية ذاكرة الوصول العشوائي.

وعند البدء بإعدادات التمهيد والحساب والبرامج تم الاستعانة بسكربتات Ansible التي تم إنشاؤها سابقًا وكانت جميع الإعدادات موثقة بوضوح وجاهزة للاستخدام.

كما ساعدت أتمتة Ansible على تسريع عملية التثبيت الجديدة حيث استغرقت عملية تثبيت الحد الأدنى من حزم نظام التشغيل ديبيان عبر منفذ يو اس بي USB stick حوالي 15 دقيقة واستغرق الشكل اللاحق للنظام باستخدام Ansible لنشر المستخدم النهائي تسع دقائق أخرى فقط.

النتيجة

تظهر هذه التجربة البسيطة القيمة الحقيقية لقدرات الأتمتة والتوثيق باستخدام Ansible، فتخصيص بعض الوقت في تعلم وممارسة Ansible يوفر الكثير من الوقت لاحقًا عند الحاجة لتوفير جهاز جديد أو إعادة استخدام جهاز ما، كما أن ملف YAML واضح وسهل الاختبار والتحسين.

ترجمة -وبتصرف- للمقال How Ansible brought peace to my home لصاحبه James Farrell.

 


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...