مقدمة
تم تصميم أنظمة إدارة التكوين لتبسيط عملية التحكم في أعداد كبيرة من الخوادم، للمسؤولين وفرق العمليات. تتيح لك هذه الأنظمة التحكم في العديد من الأنظمة المختلفة بطريقة آلية من موقع واحد مركزي.
على الرغم من وجود العديد من أدوات إدارة التكوين الشهيرة المتاحة لأنظمة 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.
- مستخدم غير جذري يمتلك صلاحيات sudo. يمكنك إعداد هذا باتباع الخطوتين 2 و 3 من دليلنا دليل إعداد الخادم الأولي لـ Ubuntu 20.04. ومع ذلك، يرجى ملاحظة أنه إذا كنت تستخدم خادمًا عن بُعد كنُود تحكم Ansible الخاص بك، يجب عليك اتباع كل خطوة من هذا الدليل. سيقوم ذلك بتكوين جدار ناري على الخادم باستخدام
-
مضيف أو أكثر لأنسيبل: مضيف Ansible هو أي جهاز تم تكوينه للتحكم بواسطة نقطة التحكم Ansible الخاصة بك. يفترض هذا الدليل أن مضيفات Ansible الخاصة بك هي خوادم بعيدة تعمل بنظام Ubuntu 20.04. تأكد من أن لكل مضيف Ansible:
- تمت إضافة مفتاح SSH العام لنقطة التحكم في Ansible إلى
authorized_keys
لمستخدم النظام. يمكن أن يكون هذا المستخدم إما root أو مستخدم عادي بامتيازات sudo. لتكوين ذلك، يمكنك اتباع الخطوة 2 من كيفية إعداد مفاتيح SSH على Ubuntu 20.04.
- تمت إضافة مفتاح SSH العام لنقطة التحكم في Ansible إلى
الخطوة 1 — تثبيت Ansible
للبدء في استخدام Ansible كوسيلة لإدارة بنية الخوادم الخاصة بك، تحتاج إلى تثبيت برنامج Ansible على الجهاز الذي سيكون مركز التحكم في Ansible.
من جهاز التحكم الخاص بك، قم بتشغيل الأمر التالي لتضمين مستودع المشروع الرسمي PPA (أرشيف الحزم الشخصية) في قائمة مصادر نظامك:
- sudo apt-add-repository ppa:ansible/ansible
اضغط ENTER
عندما يُطلب منك قبول إضافة PPA.
بعد ذلك، قم بتحديث فهرس الحزم في نظامك حتى يكون على علم بالحزم المتاحة في PPA المُضاف حديثًا:
- sudo apt update
بعد هذا التحديث، يمكنك تثبيت برنامج Ansible بالأمر التالي:
- sudo apt install ansible
الآن لديك مركز تحكم Ansible جاهز مع كل البرامج المطلوبة لإدارة مضيفيك. في الخطوة التالية، سنتعرض لكيفية إضافة مضيفيك إلى ملف التخزين المؤقت لمركز التحكم حتى يمكنه التحكم فيهم.
الخطوة 2 — إعداد ملف التخزين المؤقت
يحتوي ملف المخزون على معلومات حول الخوادم التي ستديرها باستخدام Ansible. يمكنك تضمين أي عدد من الخوادم في ملف المخزون الخاص بك، ويمكن تنظيم الخوادم في مجموعات ومجموعات فرعية. يُستخدم ملف المخزون أيضًا غالبًا لتعيين متغيرات ستكون صالحة فقط للخوادم أو المجموعات المحددة، لتستخدم داخل السيناريوهات والقوالب. يمكن أن تؤثر بعض المتغيرات أيضًا على كيفية تشغيل السيناريو، مثل متغير ansible_python_interpreter
الذي سنراه في لحظة.
لتحرير محتويات مخزون Ansible الافتراضي الخاص بك، افتح ملف /etc/ansible/hosts
باستخدام محرر النص الخاص بك على جهاز التحكم Ansible الخاص بك:
- sudo nano /etc/ansible/hosts
ملاحظة: على الرغم من أن Ansible عادة ما يقوم بإنشاء ملف مخزون افتراضي في etc/ansible/hosts
، إلا أنه يمكنك إنشاء ملفات مخزون في أي مكان يناسب احتياجاتك الخاصة. في هذه الحالة، ستحتاج إلى توفير مسار ملف المخزون المخصص الخاص بك باستخدام معلمة -i
عند تشغيل أوامر وسيناريوهات Ansible. استخدام ملفات المخزون لكل مشروع هو ممارسة جيدة لتقليل خطر تشغيل سيناريو على مجموعة خاطئة من الخوادم.
يحتوي ملف المخزون الافتراضي الذي يوفره تثبيت Ansible على عدد من الأمثلة التي يمكنك استخدامها كمراجع لإعداد مخزونك. يعرف المثال التالي مجموعة باسم [servers]
تحتوي على ثلاث خوادم مختلفة، يتم التعرف عليها بواسطة اسم مستعار مخصص: server1، server2، و server3. تأكد من استبدال عناوين IP المميزة بعناوين IP الخوادم الخاصة بك في هذا المثال.
[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
لتأكيد التغييرات.
في أي وقت تريد فيه التحقق من الجدول الخاص بك ، يمكنك تشغيل:
- ansible-inventory --list -y
سوف ترى نتائج مشابهة لهذه ، ولكن تحتوي على البنية التحتية للخادم الخاصة بك كما هو محدد في ملف الجدول الخاص بك:
Outputall:
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، قم بتشغيل:
- ansible all -m ping -u root
سيستخدم هذا الأمر وحدة الاختبار المدمجة في Ansible ping
لتشغيل اختبار الاتصال على جميع العقد من المخزن الافتراضي الخاص بك، متصلاً بصفة root. ستختبر وحدة ping
:
- ما إذا كانت العقد قابلة للوصول؛
- ما إذا كان لديك اعتمادات SSH صالحة؛
- ما إذا كانت العقد قادرة على تشغيل وحدات Ansible باستخدام Python.
يجب أن تحصل على إخراج مشابه لهذا:
Outputserver1 | 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 على الخوادم المحدّدة في ملف التخزين الخاص بك. على سبيل المثال، يمكنك التحقق من استخدام القرص على جميع الخوادم باستخدام:
- 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
على جميع الخوادم في ملف التخزين الخاص بك:
- ansible all -m apt -a "name=vim state=latest" -u root
يمكنك أيضًا استهداف المضيفين الفرديين، بالإضافة إلى المجموعات والمجموعات الفرعية، عند تشغيل أوامر Ansible. على سبيل المثال، هكذا يمكنك التحقق من وقت التشغيل
لكل مضيف في مجموعة الخوادم
:
- ansible servers -a "uptime" -u root
يمكننا تحديد عدة مضيفين عن طريق فصلهم بفاصلات:
- ansible server1:server2 -m ping -u root
لمزيد من المعلومات حول كيفية استخدام Ansible، بما في ذلك كيفية تنفيذ السيناريوهات لتلقائية إعداد الخادم، يمكنك التحقق من دليل الإشارة إلى Ansible.
الختام
في هذا الدليل، قمت بتثبيت Ansible وإعداد ملف المخزون لتنفيذ الأوامر المؤقتة من خادم التحكم في Ansible.
بمجرد تأكيدك على قدرتك على الاتصال بالبنية التحتية والتحكم فيها من جهاز تحكم Ansible المركزي، يمكنك تنفيذ أي أمر أو سيناريو ترغب في ذلك على تلك الخوادم.
لمزيد من المعلومات حول كيفية استخدام Ansible، تحقق من دليل الغش في Ansible.