المقدمة
أنسيبل هو أداة إدارة تكوين حديثة تسهل مهمة إعداد وصيانة الخوادم عن بعد.
يوفر هذا الدليل بنمط ورقة غش إشارات سريعة إلى الأوامر والممارسات المستخدمة بشكل شائع عند العمل مع أنسيبل. لمحة عامة عن أنسيبل وكيفية تثبيته وتكوينه، يرجى التحقق من دليلنا على كيفية تثبيت وتكوين أنسيبل على أوبونتو 20.04.
كيفية استخدام هذا الدليل:
- هذا الدليل بتنسيق ورقة غش مع مقاطع نصية للأوامر مستقلة ذاتياً.
- انتقل إلى أي قسم يكون ذا صلة بالمهمة التي تحاول إتمامها.
- عند رؤية
نص مُظلل
في أوامر هذا الدليل، تذكر أن هذا النص يجب أن يشير إلى المضيفين وأسماء المستخدمين وعناوين IP من الجدولة الخاصة بك.
معجم أنسيبل
يتم استخدام المصطلحات الخاصة بأنسيبل التالية على نطاق واسع في هذا الدليل:
- الجهاز / العقدة التحكمية: النظام الذي يتم فيه تثبيت أنسيبل وتكوينه للاتصال وتنفيذ الأوامر على العقد.
- العقدة: خادم يتم التحكم فيه بواسطة أنسيبل.
- ملف المخزون: ملف يحتوي على معلومات حول الخوادم التي تتحكم فيها Ansible، عادة ما يوجد في
/etc/ansible/hosts
. - الملف النصي: ملف يحتوي على سلسلة من المهام التي يجب تنفيذها على خادم عن بعد.
- الدور: مجموعة من الملفات النصية والملفات الأخرى ذات الصلة بغرض معين مثل تثبيت خادم ويب.
- اللعبة: تشغيل Ansible كامل. يمكن أن تحتوي الـ لعبة على عدة ملفات نصية وأدوار، مدرجة من ملف نصي واحد يعمل كنقطة دخول.
إذا كنت ترغب في مثال على هذه الأوامر في الممارسة، انظر دليلنا على كيفية استخدام Ansible لتلقيم الخادم الأولي على Ubuntu 20.04. ستحتاج إلى خادم عن بعد واحد على الأقل لاستخدامه كعقدة.
اختبار الاتصال بالعقد
للاختبار ما إذا كان بإمكان Ansible الاتصال وتشغيل الأوامر والملفات النصية على عقدك، يمكنك استخدام الأمر التالي:
سيختبر وحدة ping
ما إذا كان لديك بيانات اعتماد صالحة للاتصال بالعقد المعرفة في ملف المخزون الخاص بك، بالإضافة إلى اختبار إمكانية Ansible تشغيل النصوص البرمجية بايثون على الخادم البعيد. يعني الرد بـ بونج أن Ansible جاهزة لتشغيل الأوامر والملفات النصية على تلك العقدة.
الاتصال كمستخدم مختلف
افتراضيًا، يحاول Ansible الاتصال بالعقد كمستخدم النظام الحالي، باستخدام زوج مفاتيح SSH المقابل. للاتصال كمستخدم مختلف، قم بإضافة الأمر بعلامة -u
واسم المستخدم المقصود:
نفس الشيء صحيح أيضًا بالنسبة لـ ansible-playbook
:
استخدام مفتاح SSH مخصص
إذا كنت تستخدم مفتاح SSH مخصصًا للاتصال بالخوادم البعيدة، يمكنك توفيره أثناء التنفيذ باستخدام الخيار --private-key
:
هذا الخيار صالح أيضًا لـ ansible-playbook
:
استخدام المصادقة عبر كلمة المرور
إذا كنت بحاجة إلى استخدام المصادقة عبر كلمة المرور للاتصال بالعقد، فيجب عليك إضافة الخيار --ask-pass
إلى أمر Ansible الخاص بك.
سيطلب منك هذا الأمر من Ansible إدخال كلمة مرور المستخدم على الخادم البعيد الذي تحاول الاتصال به:
هذا الخيار صالح أيضًا لـ ansible-playbook
:
توفير كلمة مرور sudo
إذا كان المستخدم عن بعد بحاجة إلى توفير كلمة مرور لتشغيل أوامر sudo
، يمكنك تضمين الخيار --ask-become-pass
في أمر Ansible الخاص بك. سيطلب منك هذا توفير كلمة مرور sudo للمستخدم عن بعد:
هذا الخيار صالح أيضًا لـ ansible-playbook
:
استخدام ملف جرد مخصص
يتم توجيه ملف الجرد الافتراضي عادةً إلى /etc/ansible/hosts
، ولكن يمكنك أيضًا استخدام الخيار -i
للإشارة إلى ملفات جرد مخصصة عند تشغيل أوامر وسيناريوهات Ansible. تدعم Ansible أيضًا نصوص الجرد لإنشاء ملفات جرد ديناميكية، عندما يتغير جردك، مع إنشاء الخوادم وتدميرها بشكل متكرر. تُستخدم ملفات الجرد المخصصة لإعداد جرود مخصصة لكل مشروع يمكن تضمينها في أنظمة التحكم بالنسخ مثل Git:
نفس الخيار صالح لـ ansible-playbook
:
تشغيل الأوامر العرضية
لتنفيذ أمر على العقدة، استخدم الخيار -a
تليه الأمر الذي تريد تشغيله، بين علامتي اقتباس.
سينفذ ذلك uname -a
على جميع العقد في قائمة المخزون:
من الممكن أيضًا تشغيل وحدات Ansible باستخدام الخيار -m
. ستقوم الأمر التالي بتثبيت الحزمة vim
على server1
من قائمة المخزون:
قبل إجراء تغييرات على عقدك، يمكنك إجراء تجربة جافة لتوقع كيف ستتأثر الخوادم بأمرك. يمكن القيام بذلك عن طريق تضمين الخيار --check
:
تشغيل السيناريوهات
لتشغيل سيناريو وتنفيذ جميع المهام المعرفة ضمنه، استخدم الأمر ansible-playbook
:
لتجاوز الخيار الافتراضي hosts
في السيناريو وتقييد التنفيذ لمجموعة معينة أو عقدة، ضمن الخيار -l
في أمرك:
الحصول على معلومات حول مسرحية
الخيار --list-tasks
يُستخدم لعرض جميع المهام التي ستتم تنفيذها بواسطة المسرحية دون إجراء أي تغييرات على الخوادم البعيدة:
بالمثل، من الممكن عرض جميع الخوادم التي ستتأثر بالمسرحية دون تشغيل أي مهام على الخوادم البعيدة:
يمكنك استخدام العلامات لتقييد تنفيذ المسرحية. لعرض جميع العلامات المتاحة في المسرحية، استخدم الخيار --list-tags
:
التحكم في تنفيذ الدليل
يمكنك استخدام الخيار --start-at-task
لتحديد نقطة بداية جديدة لدليلك. سيقوم Ansible بتخطي أي شيء يأتي قبل المهمة المحددة، وتنفيذ بقية المسرحية ابتداءً من تلك النقطة. يتطلب هذا الخيار اسم مهمة صالحًا كوسيط:
لتنفيذ المهام المرتبطة بعلامات محددة فقط، يمكنك استخدام الخيار --tags
. على سبيل المثال، إذا كنت ترغب في تنفيذ المهام الموسومة بـ nginx
أو mysql
فقط، يمكنك استخدام:
إذا كنت ترغب في تجاوز جميع المهام التي تنتمي إلى علامات معينة، استخدم --skip-tags
. سيُنفّذ الأمر التالي myplaybook.yml
، متجاوزًا جميع المهام التي تحمل علامة mysql
:
استخدام Ansible Vault لتخزين البيانات الحساسة
إذا كانت سكربتات Ansible الخاصة بك تتعامل مع بيانات حساسة مثل كلمات المرور ومفاتيح API وبيانات اعتماد، فمن المهم الاحتفاظ بهذه البيانات بأمان باستخدام آلية تشفير. يوفر Ansible أداة ansible-vault
لتشفير الملفات والمتغيرات.
على الرغم من أنه من الممكن تشفير أي ملف بيانات Ansible بالإضافة إلى الملفات الثنائية، فإن الأمر الأكثر شيوعًا هو استخدام ansible-vault
لتشفير ملفات المتغيرات التي تحتوي على بيانات حساسة. بعد تشفير ملف بهذه الأداة، ستكون قادرًا فقط على تنفيذه أو تحريره أو عرض محتوياته عن طريق تقديم كلمة المرور ذات الصلة التي تم تحديدها عند تشفير الملف للمرة الأولى.
إنشاء ملف مشفر جديد
يمكنك إنشاء ملف Ansible مشفر جديد باستخدام:
سيقوم هذا الأمر بأداء الإجراءات التالية:
- أولاً، سيطلب منك إدخال كلمة مرور جديدة. ستحتاج إلى توفير هذه الكلمة السرية في كل مرة تصل فيها إلى محتويات الملف، سواء كان ذلك للتحرير أو المشاهدة، أو مجرد تشغيل النصوص التوجيهية أو الأوامر باستخدام تلك القيم.
- ثم، سيقوم بفتح محرر سطر الأوامر الافتراضي الخاص بك حتى تتمكن من ملء الملف بالمحتويات المطلوبة.
- وأخيرًا، عند الانتهاء من التحرير، سيقوم
ansible-vault
بحفظ الملف كبيانات مشفرة.
تشفير ملف Ansible الحالي
لتشفير ملف Ansible حالي، يمكنك استخدام الصيغة التالية:
سيطلب منك هذا إدخال كلمة مرور ستحتاج إليها كلما كنت تصل إلى ملف credentials.yml
.
عرض محتويات ملف مشفر
إذا كنت ترغب في عرض محتويات ملف تم تشفيره سابقًا باستخدام ansible-vault
ولم تكن بحاجة لتغيير محتوياته، يمكنك استخدام:
سيطلب منك هذا توفير كلمة المرور التي اخترتها عندما قمت بتشفير الملف للمرة الأولى باستخدام ansible-vault
.
تحرير ملف مشفر
لتحرير محتويات ملف تم تشفيره سابقًا باستخدام Ansible Vault، قم بتشغيل:
سيطلب منك هذا إدخال كلمة المرور التي اخترتها عند تشفير الملف credentials.yml
لأول مرة باستخدام ansible-vault
. بعد التحقق من صحة كلمة المرور، سيتم فتح محرر الأوامر الافتراضي الخاص بك مع محتويات الملف غير المشفرة، مما يتيح لك إجراء التغييرات الخاصة بك. عند الانتهاء، يمكنك حفظ وإغلاق الملف كالمعتاد، وسيتم حفظ المحتويات المحدثة كبيانات مشفرة.
فك تشفير الملفات المشفرة
إذا كنت ترغب في إرجاع ملف تم تشفيره سابقًا بواسطة ansible-vault
إلى نسخته غير المشفرة بشكل دائم، يمكنك القيام بذلك بهذا النحو:
سيطلب منك هذا إدخال نفس كلمة المرور المستخدمة عند تشفير الملف credentials.yml
لأول مرة باستخدام ansible-vault
. بعد التحقق من صحة كلمة المرور، ستتم حفظ محتويات الملف على القرص كبيانات غير مشفرة.
استخدام كلمات مرور متعددة للخزنة
تدعم Ansible عدة كلمات مرور للخزنة مجمعة حسب معرفات الخزنة المختلفة. يعد هذا مفيدًا إذا كنت ترغب في امتلاك كلمات مرور للخزنة مخصصة لبيئات مختلفة، مثل بيئات التطوير والاختبار والإنتاج.
لإنشاء ملف مشفر جديد باستخدام معرف خزنة مخصص، قم بتضمين الخيار --vault-id
بالإضافة إلى التسمية والموقع الذي يمكن فيه لـ ansible-vault
العثور على كلمة مرور تلك الخزنة. يمكن أن تكون التسمية أي معرف، ويمكن أن يكون الموقع إما prompt
، مما يعني أن الأمر يجب أن يطلب منك إدخال كلمة مرور، أو مسارًا صالحًا إلى ملف كلمة المرور.
سينشئ هذا معرف خزنة جديد بالاسم dev يستخدم prompt
كمصدر لكلمة المرور. من خلال دمج هذه الطريقة مع ملفات المتغيرات الجماعية، ستتمكن من الحصول على خزنات ansible منفصلة لكل بيئة تطبيق:
استخدمنا dev و prod كمعرفات خزنة لتوضيح كيف يمكنك إنشاء خزنات منفصلة لكل بيئة، ولكن يمكنك إنشاء عدد لا حصر له من الخزنات، ويمكنك استخدام أي معرف تختاره كمعرف خزنة.
الآن لعرض أو تحرير أو فك تشفير هذه الملفات، ستحتاج إلى تقديم نفس معرف الخزنة ومصدر كلمة المرور مع أمر ansible-vault
:
استخدام ملف كلمة مرور
إذا كنت بحاجة إلى أتمتة عملية توفير الخوادم باستخدام أنسيبل باستخدام أداة من طرف ثالث، فستحتاج إلى وسيلة لتوفير كلمة مرور السرد دون طلبها. يمكنك القيام بذلك عن طريق استخدام ملف كلمة مرور مع ansible-vault
.
A password file can be a plain text file or an executable script. If the file is an executable script, the output produced by this script will be used as the vault password. Otherwise, the raw contents of the file will be used as vault password.
لاستخدام ملف كلمة المرور مع ansible-vault
، تحتاج إلى توفير مسار إلى ملف كلمة مرور عند تشغيل أي من أوامر vault:
لا يقوم أنسيبل بعمل تمييز بين المحتوى الذي تم تشفيره باستخدام prompt
أو ملف كلمة مرور كمصدر لكلمة المرور، طالما كانت كلمة المرور المدخلة هي نفسها. من الناحية العملية، يعني هذا أنه من المقبول تشفير ملف باستخدام prompt
ثم استخدام ملف كلمة المرور لتخزين نفس كلمة المرور المستخدمة مع طريقة prompt
. العكس صحيح أيضًا: يمكنك تشفير المحتوى باستخدام ملف كلمة مرور وبعد ذلك استخدام طريقة prompt
، عند توجيه طلب من أنسيبل.
للحصول على مرونة وأمان موسعين، بدلاً من وجود كلمة مرور السرد المخزنة في ملف نصي عادي، يمكنك استخدام نص برمجي Python للحصول على كلمة المرور من مصادر أخرى. يحتوي مستودع أنسيبل الرسمي على بضعة أمثلة لنصوص الخزان التي يمكنك استخدامها كمرجع عند إنشاء نص مخصص يتناسب مع احتياجات مشروعك الخاص.
تشغيل دليل (Playbook) بيانات مشفرة عبر Ansible Vault
كلما قمت بتشغيل دليل يستخدم بيانات تم تشفيرها مسبقًا عبر ansible-vault
، ستحتاج إلى تقديم كلمة مرور الفولت (Vault) لأمر الدليل الخاص بك.
إذا استخدمت الخيارات الافتراضية وكانت مصدر كلمة المرور prompt
عند تشفير البيانات المستخدمة في هذا الدليل، يمكنك استخدام الخيار --ask-vault-pass
ليطلب منك Ansible إدخال كلمة المرور:
إذا استخدمت ملف كلمة مرور بدلاً من طلب كلمة المرور، يجب عليك استخدام الخيار --vault-password-file
بدلاً من ذلك:
إذا كنت تستخدم بيانات مشفرة تحت معرف فولت (Vault ID)، ستحتاج إلى تقديم نفس معرف الفولت ومصدر كلمة المرور الذي استخدمته عند تشفير البيانات لأول مرة:
إذا كنت تستخدم ملف كلمة مرور مع معرف الفولت، يجب عليك تقديم التسمية تليها المسار الكامل إلى ملف كلمة المرور كمصدر لكلمة المرور:
إذا استخدم دليلك عدة فولتات، يجب عليك تقديم معلمة --vault-id
لكل منها، بأي ترتيب:
تصحيح الأخطاء (Debugging)
إذا واجهتك أخطاء أثناء تنفيذ أوامر وسيناريوهات Ansible ، فمن الجيد زيادة تفصيل إخراج النتائج للحصول على مزيد من المعلومات حول المشكلة. يمكنك فعل ذلك من خلال تضمين الخيار -v
في الأمر:
إذا كنت بحاجة إلى مزيد من التفاصيل ، يمكنك استخدام -vvv
وسيزيد هذا من تفصيل إخراج النتائج. إذا كنت غير قادر على الاتصال بالعقد البعيدة عبر Ansible ، استخدم -vvvv
للحصول على معلومات تصحيح الاتصال:
الاستنتاج
يغطي هذا الدليل بعض من أكثر الأوامر الشائعة في Ansible التي قد تستخدمها عند توفير الخوادم ، مثل كيفية تنفيذ الأوامر عن بعد على عقدتك وكيفية تشغيل السيناريوهات باستخدام مجموعة متنوعة من الإعدادات المخصصة.
هناك متغيرات أخرى للأوامر والعلامات التي قد تجدها مفيدة لسير عملك في Ansible. للحصول على نظرة عامة على جميع الخيارات المتاحة ، يمكنك استخدام الأمر help:
إذا كنت ترغب في الحصول على نظرة شاملة على Ansible وجميع أوامره وميزاته المتاحة ، يرجى الرجوع إلى التوثيق الرسمي لـ Ansible.
إذا كنت ترغب في رؤية مثال عملي آخر لـ Ansible ، تحقق من دليلنا حول كيفية استخدام Ansible لتثبيت وإعداد Docker على Ubuntu 20.04.
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-ansible-cheat-sheet-guide