أنسيبل هو أداة تلقائية مستخدمة على نطاق واسع يمكنها إدارة مئات العقد في وقت واحد. أنسيبل لديه العديد من الميزات الرائعة، واحدة منها هي قدرته على إدارة سطر واحد داخل ملف على العقد البعيدة باستخدام وحدة Ansible lineinfile.
وحدة Ansible lineinfile هي وحدة تقوم بتنفيذ مختلف الإجراءات على سطر واحد في ملف، مثل استبدال سطر، تحديث سطر، أو إضافة سطر معين.
في هذا البرنامج التعليمي، ستتعلم ما هي وحدة Ansible lineinfile، وكيف تعمل، وكيفية استخدامها لإدارة ملفات النص.
المتطلبات المسبقة
سيكون هذا المنشور دورة تعليمية خطوة بخطوة حول وحدة Ansible lineinfile. إذا كنت ترغب في متابعتها، تأكد من وجود ما يلي:
- مضيف تحكم أنسيبل – سيتم استخدام أنسيبل v2.9.24 على جهاز Ubuntu 18.04.5 LTS في هذا البرنامج التعليمي.
- A remote computer to run commands. You’ll need an inventory file set up and one or more hosts already configured to run Ansible command and playbooks on. The remote Linux computer will be called myserver, and the tutorial will use an inventory group called web.
- يجب أن يكون Apache قد تم تثبيته بالفعل على الكمبيوتر البعيد إذا كنت ترغب في متابعة البرنامج التعليمي بالضبط.
تعديل ملف نصي باستخدام وحدة Ansible lineinfile.
لنبدأ هذا البرنامج التعليمي بتشغيل وحدة Ansible lineinfile باستخدام أوامر ad hoc. الأوامر ad hoc هي وسيلة سريعة لاختبار أو تشغيل أمر واحد على جهاز بعيد.
قم بتسجيل الدخول إلى جهاز التحكم الخاص بـ Ansible وقم بتشغيل الأمر التالي. يستخدم هذا الأمر وحدة lineinfile (-m
) للاتصال بجهاز الويب وتمرير وسيطة (-a
) وهي الأمر الذي يجب تنفيذه.
في هذا الحالة، تقوم وحدة lineinfile بتحديث إدخال المضيف المحلي بربط عنوان الآي بي 127.0.0.1
بـ myapache
في ملف /etc/hosts. عن طريق ربط 127.0.0.1
بـ myapache
يتيح لك التنقل إلى صفحة اختبار Apache محليًا على HTTP://myapache:80
path
يشير إلى موقع الملف.regexp
يجد التعبير العادي، إذا كان موجودًا في الملف ويحدث بـ127.0.0.1 myapache
المحدد في المعلمةline
.- –become العلم يسمح لك بتشغيل الأمر كمستخدم متميز.
- المجموعة
web
هي مجموعة الجرد التي تحتوي على جميع الخوادم. ansible.builtin.lineinfile
أو ببساطة lineinfile هو اسم الوحدة.
بعد تنفيذ الأمر، يجب أن ترى رسالة تم التغيير تؤكد أن السطر قد تم تحديثه بنجاح على الجهاز البعيد.

تسجيل الدخول إلى العقد البعيد باستخدام عميل SSH والتحقق مما إذا كان الملف /etc/hosts قد تم تحديثه بالقيمة الجديدة باستخدام أمر cat
.
كما يمكنك رؤية أدناه، تم تحديث إدخال localhost بنجاح بقيمة 127.0.0.1 myapache
على الجهاز البعيد.

تعديل ملفات نصية متعددة داخل سيناريو تشغيل
العمل مع أمر فردي لإدارة السطور على جهاز بعيد قد يكون مقبولًا، ولكنه سيكون صعبًا إذا كان لديك سطور في ملفات متعددة أو سطور متعددة في ملف لإدارته. بدلاً من استخدام أوامر فورية، افكر في استخدام وحدة Ansible lineinfile ضمن السيناريو باستخدام الأمر ansible-playbook.
الآن، دعونا نتعلم كيفية استخدام وحدة Ansible lineinfile ضمن السيناريو وتعديل بعض السطور.
بفرض أنك قد سجلت بالفعل في جهاز تحكم Ansible:
1. أنشئ دليلاً يسمى ansible_lineinfile_module_demo في دليل المستخدم الخاص بك. سيحتوي هذا الدليل على سيناريو الذي ستستخدمه لاستدعاء وحدة lineinfile.
2. إنشاء ملف آخر يُسمى my_playbook.yml في الدليل ~/ansible_lineinfile_module_demo ولصق محتويات ملف التشغيل YAML التالية فيه. هذا الملف التشغيل يحتوي على مهام متعددة تستخدم وحدة Ansible lineinfile
لإدارة الأسطر في ملفات التكوين المختلفة لـ Apache على الجهاز البعيد.
يحتوي الملف التشغيل أدناه على المهام التالية:
1. يتحقق مما إذا كان ADMIN
موجودًا في ملف /etc/sudoers؛ إذا لم يكن كذلك، فإن المهمة تضيفه.
2. يضمن أن الأباتشي الافتراضي يستمع على المنفذ 8080 داخل ملف /etc/apache2/ports.conf؛ إذا وجد أي خط آخر يحتوي على منفذ آخر، فإن وحدة lineinfile تحدثه إلى المنفذ 8080
. بالمثل، تحت ملف /etc/apache2/apache2.conf، تحدث MaxKeepAliveRequests
إلى 1000 و KeepAliveTimeout
إلى 100.
3. يضيف السطر الذي يحتوي على النص “مرحبًا هذه هي صفحتي Apache” في نهاية صفحة index.html
على الخادم البعيد تحت الدليل /var/www/html.
يتم كتابة ملفات التشغيل الخاصة بـ Ansible بتنسيق YAML. لمعرفة المزيد عن YAML، انقر هنا
3. الآن، قم باستدعاء دفتر الأعمال وتنفيذ المهام باستخدام أمر ansible-playbook
لإضافة أو تحديث جميع الأسطر المحددة في دفتر الأعمال على الخادم عن بعد.

يمكنك أدناه أن ترى أن المهمة لها حالة تغيير، مما يعني أن الخادم عن بعد لم يكن في الحالة المناسبة وتم تعديله لتشغيل الأمر. بالنسبة لتلك المهمة التي لها حالة جيدة، فإن ذلك يظهر أنها لا تتطلب أي تغييرات.
4. بعد ذلك، قم بالاتصال بـ الخادم عن بعد باستخدام عميل SSH المفضل لديك.
5. في النهاية، تحقق مما إذا كانت جميع الأسطر المحددة في my_playbook.yml قد تم تحديثها أو إضافتها على الخادم عن بعد باستخدام أمر cat
.
الصورة أدناه تؤكد أن admin
تمت إضافته بالفعل في ملف sudoers.

مرة أخرى، تؤكد الصورة أدناه أن Apache يستمع على Port 8080
بشكل افتراضي.

وأخيرًا، قم بالتحقق من MaxKeepAliveRequests
و KeepAliveTimeout
إذا تم تحديثهما إلى 1000 و 100، على التوالي.

MaxKeepAliveRequests
and KeepAliveTimeout
in the config file الاستنتاج
وحدة Ansible lineinfile module هي طريقة رائعة لتعديل ملفات النص على الخوادم البعيدة. توفر الوحدة طريقة رائعة لإضافة وإزالة وتعديل السطور في ملفات النص ضمن سيناريوهات التشغيل الخاصة بك.
ما هي الحالات الأخرى التي ترى أنها ستستفيد من وحدة Ansible lineinfile؟