عندما نفكر في Ansible، فإننا نفكر في عقدة تحكم واحدة تدير وتكوين جميع العقد المحددة الأخرى. ومع ذلك، يوفر Ansible خيارًا أكثر لامركزية باستخدام الأداة المساعدة ansible-pull. تسمح هذه الأداة المساعدة للعقد المُدارة بسحب التكوينات من مستودع التحكم في الإصدار.
في هذا المنشور، سوف نستكشف كيفية العمل مع الأمر ansible-pull ونقدم بعض الأمثلة الأساسية.
متى تستخدم السحب Ansible
قبل التعمق في الجزء العملي من البرنامج التعليمي، دعنا نفهم بعض السيناريوهات الشائعة التي قد تحتاج فيها إلى استخدام خيار السحب غير القابل للسحب.
البيئات الديناميكية – في بيئة ديناميكية مثل البنية التحتية السحابية حيث يمكن أن تكون العقد سريعة الزوال، قد يكون من المفيد السماح لها بتكوين نفسها عند بدء التشغيل.
تجنب نقاط الفشل المركزية – عند استخدام عقدة تحكم واحدة، يمكن أن يؤدي ذلك إلى نقطة فشل واحدة حيث يتم فقدان عقد التحكم لجميع التكوينات وتحتاج إلى إعادة البناء.
بيئات الحافة – قد يكون سحب التكوينات أكثر كفاءة إذا كان لديك مواقع طرفية ذات اتصال محدود بالمناطق المركزية.
متطلبات:
قبل الغوص في الأمثلة، تأكد من أن لديك ما يلي:
- تم تثبيت Ansible على العقد الخاصة بك
- مستودع VCS (مثل Git) يحتوي على قواعد اللعب الخاصة بـ Ansible
- مفاتيح SSH أو بيانات الاعتماد المناسبة للوصول إلى المستودع
أمر سحب غير قابل للتنفيذ
يوضح ما يلي بناء جملة الأمر ansible-pull:
ansible-pull [-h] [--version] [-v] [--مفتاح خاص PRIVATE_KEY_FILE][-u REMOTE_USER] [-c CONNECTION] [-T TIMEOUT]
[--ssh-common-args SSH_COMMON_ARGS]
[--sftp-extra-args SFTP_EXTRA_ARGS]
[--scp-extra-args SCP_EXTRA_ARGS]
[--ssh-وسائط إضافية SSH_EXTRA_ARGS]
[-ك | --ملف كلمة مرور الاتصال CONNECTION_PASSWORD_FILE]
[--معرف القبو VAULT_IDS]
[--اسأل-خزنة-كلمة المرور | --vault-password-file VAULT_PASSWORD_FILES]
[-EXTRA_VARS] [-t TAGS] [--تخطي العلامات SKIP_TAGS]
[-i المخزون] [--مضيفو القائمة] [-l SUBSET] [-M MODULE_PATH]
[-ك | --يصبح ملف كلمة المرور BECOME_PASSWORD_FILE]
[--تطهير] [-o] [-s SLEEP] [-f] [-d DEST] [-U URL] [--كامل]
[-C CHECKOUT] [--قبول-مفتاح المضيف] [-m MODULE_NAME]
[--التحقق-الالتزام] [--تنظيف] [--تتبع الغواصات] [--فحص]
[--فرق]
[playbook.yml ..
سحب Ansible الأساسية
الاستخدام الأساسي للسحب غير القابل للسحب هو سحب وتطبيق قواعد اللعبة من المستودع. بناء جملة الأمر كما يلي:
ansible-pull -Uعلى سبيل المثال:
ansible-pull -U git://github.com/linuxhint/ansible-repo.git main.ymlبمجرد تشغيل الأمر السابق، سيقوم أمر السحب Ansible بما يلي:
- استنساخ المستودع المحدد
- قم بتشغيل دليل التشغيل المحدد (main.yml)
جدولة سحب Ansible مع Cron
التطبيق الأكثر شيوعًا وإفادة لميزة السحب غير القابل للسحب هو جعل العقد تتحقق بشكل دوري من وجود تحديثات في المستودع باستخدام وظائف cron. مثال توضيحي هو كما يلي:
0 * * * * /usr/local/bin/ansible-pull -U https://github.com/username/repo.git site.yml > /var/log/ansible-pull.logيتيح لنا ذلك أتمتة عملية السحب للمستودع الهدف وجلب تغييرات الريبو. إذا كانت هناك أية تغييرات، فسيقوم Ansible بتنفيذها والتأكد من أن العقد لديها أحدث التكوين المحدد في قواعد اللعبة.
خاتمة
لقد استكشفنا العمل باستخدام أمر ansible-pull لعكس عمليات Ansible النموذجية عن طريق جلب التكوينات من نظام التحكم في الإصدار بدلاً من دفع التكوين من عقدة مركزية.