كيفية تثبيت وتكوين Ansible على Ubuntu 20.04

مقدمة

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

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

في هذا الدليل، سنناقش كيفية تثبيت Ansible على خادم Ubuntu 20.04 ونتناول بعض أساسيات كيفية استخدام هذا البرنامج. للحصول على نظرة عامة أعلى على Ansible كأداة إدارة تكوين، يرجى الرجوع إلى مقدمة في إدارة التكوين باستخدام Ansible.

المتطلبات الأساسية

لمتابعة هذا البرنامج التعليمي، ستحتاج إلى:

  • نُود التحكم في Ansible واحدة: نُود التحكم في Ansible هي الآلة التي سنستخدمها للاتصال بالمضيفين والتحكم فيها عبر SSH. يمكن أن تكون نُود التحكم في Ansible إما جهازك المحلي أو خادم مخصص لتشغيل Ansible، على الرغم من أن هذا الدليل يفترض أن نُود التحكم الخاصة بك هي نظام Ubuntu 20.04. تأكد من أن لدى نُود التحكم:

    • مستخدم غير جذري يمتلك صلاحيات sudo. يمكنك إعداد هذا باتباع الخطوتين 2 و 3 من دليلنا دليل إعداد الخادم الأولي لـ Ubuntu 20.04. ومع ذلك، يرجى ملاحظة أنه إذا كنت تستخدم خادمًا عن بُعد كنُود تحكم Ansible الخاص بك، يجب عليك اتباع كل خطوة من هذا الدليل. سيقوم ذلك بتكوين جدار ناري على الخادم باستخدام ufw وتمكين الوصول الخارجي إلى ملف تعريف المستخدم غير الجذري الخاص بك، وهما من العوامل التي ستساعد على الحفاظ على أمان الخادم عن بُعد.
    • زوج مفاتيح SSH مرتبط بهذا المستخدم. يمكنك إعداد هذا باتباع الخطوة 1 من دليلنا حول كيفية إعداد مفاتيح SSH على Ubuntu 20.04.
  • مضيف أو أكثر لأنسيبل: مضيف Ansible هو أي جهاز تم تكوينه للتحكم بواسطة نقطة التحكم Ansible الخاصة بك. يفترض هذا الدليل أن مضيفات Ansible الخاصة بك هي خوادم بعيدة تعمل بنظام Ubuntu 20.04. تأكد من أن لكل مضيف Ansible:

    • تمت إضافة مفتاح SSH العام لنقطة التحكم في Ansible إلى authorized_keys لمستخدم النظام. يمكن أن يكون هذا المستخدم إما root أو مستخدم عادي بامتيازات sudo. لتكوين ذلك، يمكنك اتباع الخطوة 2 من كيفية إعداد مفاتيح SSH على Ubuntu 20.04.

الخطوة 1 — تثبيت Ansible

للبدء في استخدام Ansible كوسيلة لإدارة بنية الخوادم الخاصة بك، تحتاج إلى تثبيت برنامج Ansible على الجهاز الذي سيكون مركز التحكم في Ansible.

من جهاز التحكم الخاص بك، قم بتشغيل الأمر التالي لتضمين مستودع المشروع الرسمي PPA (أرشيف الحزم الشخصية) في قائمة مصادر نظامك:

  1. sudo apt-add-repository ppa:ansible/ansible

اضغط ENTER عندما يُطلب منك قبول إضافة PPA.

بعد ذلك، قم بتحديث فهرس الحزم في نظامك حتى يكون على علم بالحزم المتاحة في PPA المُضاف حديثًا:

  1. sudo apt update

بعد هذا التحديث، يمكنك تثبيت برنامج Ansible بالأمر التالي:

  1. sudo apt install ansible

الآن لديك مركز تحكم Ansible جاهز مع كل البرامج المطلوبة لإدارة مضيفيك. في الخطوة التالية، سنتعرض لكيفية إضافة مضيفيك إلى ملف التخزين المؤقت لمركز التحكم حتى يمكنه التحكم فيهم.

الخطوة 2 — إعداد ملف التخزين المؤقت

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

لتحرير محتويات مخزون Ansible الافتراضي الخاص بك، افتح ملف /etc/ansible/hosts باستخدام محرر النص الخاص بك على جهاز التحكم Ansible الخاص بك:

  1. sudo nano /etc/ansible/hosts

ملاحظة: على الرغم من أن Ansible عادة ما يقوم بإنشاء ملف مخزون افتراضي في etc/ansible/hosts، إلا أنه يمكنك إنشاء ملفات مخزون في أي مكان يناسب احتياجاتك الخاصة. في هذه الحالة، ستحتاج إلى توفير مسار ملف المخزون المخصص الخاص بك باستخدام معلمة -i عند تشغيل أوامر وسيناريوهات Ansible. استخدام ملفات المخزون لكل مشروع هو ممارسة جيدة لتقليل خطر تشغيل سيناريو على مجموعة خاطئة من الخوادم.

يحتوي ملف المخزون الافتراضي الذي يوفره تثبيت Ansible على عدد من الأمثلة التي يمكنك استخدامها كمراجع لإعداد مخزونك. يعرف المثال التالي مجموعة باسم [servers] تحتوي على ثلاث خوادم مختلفة، يتم التعرف عليها بواسطة اسم مستعار مخصص: server1، server2، و server3. تأكد من استبدال عناوين IP المميزة بعناوين IP الخوادم الخاصة بك في هذا المثال.

/etc/ansible/hosts
[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113

[all:vars]
ansible_python_interpreter=/usr/bin/python3

المجموعة الفرعية all:vars تعيين معلمة المضيف ansible_python_interpreter التي ستكون سارية لجميع المضيفين المدرجين في هذا الجدول. تضمن هذه المعلمة أن يستخدم الخادم البعيد التنفيذية بايثون 3 /usr/bin/python3 بدلاً من بايثون 2.7 /usr/bin/python (الإصدار 2.7) ، والذي لا يتواجد في الإصدارات الحديثة من أوبونتو.

عند الانتهاء ، احفظ وأغلق الملف عن طريق الضغط على CTRL+X ثم Y وENTER لتأكيد التغييرات.

في أي وقت تريد فيه التحقق من الجدول الخاص بك ، يمكنك تشغيل:

  1. ansible-inventory --list -y

سوف ترى نتائج مشابهة لهذه ، ولكن تحتوي على البنية التحتية للخادم الخاصة بك كما هو محدد في ملف الجدول الخاص بك:

Output
all: children: servers: hosts: server1: ansible_host: 203.0.113.111 ansible_python_interpreter: /usr/bin/python3 server2: ansible_host: 203.0.113.112 ansible_python_interpreter: /usr/bin/python3 server3: ansible_host: 203.0.113.113 ansible_python_interpreter: /usr/bin/python3 ungrouped: {}

الآن بعد تكوين ملف الجدول الخاص بك ، لديك كل ما تحتاجه لاختبار الاتصال بمضيفي Ansible الخاص بك.

الخطوة 3 — اختبار الاتصال

بعد إعداد ملف الجدول لتضمين خوادمك ، حان الوقت للتحقق مما إذا كان Ansible قادرًا على الاتصال بهذه الخوادم وتشغيل الأوامر عبر SSH.

لهذا الدليل ، سنستخدم حساب Ubuntu root لأن هذا عادةً هو الحساب الوحيد المتاح افتراضيًا على الخوادم الجديدة التي تم إنشاؤها حديثًا. إذا كانت لديك مضيفات Ansible بالفعل لديها مستخدم sudo العادي المنشأ ، يُشجع على استخدام هذا الحساب بدلاً من ذلك.

يمكنك استخدام الوسيطة -u لتحديد مستخدم النظام البعيد. عندما لا تُقدم، سيحاول Ansible الاتصال كمستخدم النظام الحالي على العقد الرئيسي.

من جهازك المحلي أو عقدة التحكم في Ansible، قم بتشغيل:

  1. ansible all -m ping -u root

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

  • ما إذا كانت العقد قابلة للوصول؛
  • ما إذا كان لديك اعتمادات SSH صالحة؛
  • ما إذا كانت العقد قادرة على تشغيل وحدات Ansible باستخدام Python.

يجب أن تحصل على إخراج مشابه لهذا:

Output
server1 | SUCCESS => { "changed": false, "ping": "pong" } server2 | SUCCESS => { "changed": false, "ping": "pong" } server3 | SUCCESS => { "changed": false, "ping": "pong" }

إذا كانت هذه المرة الأولى التي تقوم فيها بالاتصال بتلك الخوادم عبر SSH، سيُطلب منك تأكيد صحة الخوادم التي تقوم بالاتصال بها عبر Ansible. عندما يُطلب منك، اكتب yes ومن ثم اضغط ENTER لتأكيد.

بمجرد أن تحصل على رد "pong" من العقد، يعني ذلك أنك جاهز لتشغيل أوامر ودفاتر Ansible على تلك الخادم.

ملاحظة: إذا لم تتمكن من الحصول على رد ناجح من خوادمك، تحقق من دليل ورقة مراوغ Ansible لمزيد من المعلومات حول كيفية تشغيل أوامر Ansible مع خيارات الاتصال المختلفة.

الخطوة 4 — تشغيل الأوامر المؤقتة (اختياري)

بعد التأكد من أنّ جهاز التحكّم في Ansible قادر على التواصل مع المضيفين الخاصّين بك، يمكنك البدء في تشغيل الأوامر المؤقتة والكتب التعليمية على خوادمك.

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

  1. ansible all -a "df -h" -u root
Output
server1 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 798M 624K 798M 1% /run /dev/vda1 155G 2.3G 153G 2% / tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/vda15 105M 3.6M 101M 4% /boot/efi tmpfs 798M 0 798M 0% /run/user/0 server2 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on udev 2.0G 0 2.0G 0% /dev tmpfs 395M 608K 394M 1% /run /dev/vda1 78G 2.2G 76G 3% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/vda15 105M 3.6M 101M 4% /boot/efi tmpfs 395M 0 395M 0% /run/user/0 ...

يمكن استبدال الأمر المُظلّل df -h بأي أمر ترغب في تنفيذه.

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

  1. ansible all -m apt -a "name=vim state=latest" -u root

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

  1. ansible servers -a "uptime" -u root

يمكننا تحديد عدة مضيفين عن طريق فصلهم بفاصلات:

  1. ansible server1:server2 -m ping -u root

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

الختام

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

بمجرد تأكيدك على قدرتك على الاتصال بالبنية التحتية والتحكم فيها من جهاز تحكم Ansible المركزي، يمكنك تنفيذ أي أمر أو سيناريو ترغب في ذلك على تلك الخوادم.

لمزيد من المعلومات حول كيفية استخدام Ansible، تحقق من دليل الغش في Ansible.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-ansible-on-ubuntu-20-04