تتمثل إحدى الركائز الأساسية لقوة Ansible في قدرتها على استخدام المتغيرات التي يمكن استخدامها لتخزين المعلومات والرجوع إليها عبر أدلة اللعب والأدوار والقوالب.
تشير المتغيرات المتداخلة في Ansible إلى ميزة تعريف متغير داخل متغير آخر. يمكن أن يساعد ذلك في تبسيط بياناتك وتنظيمها، مما يجعل أدلة Ansible أكثر قابلية للقراءة والإدارة.
يعلمنا هذا البرنامج التعليمي كيفية العمل مع المتغيرات المتداخلة في تعريفات Ansible YAML. يتضمن ذلك كيفية تحديد المتغيرات المتداخلة وكيفية الوصول إليها.
ما هي المتغيرات المتداخلة Ansible؟
دعونا نبدأ بتحديد ماهية المتغيرات المتداخلة Ansible.
يمكننا تعريف المتغيرات مثل السلاسل والأعداد الصحيحة والمنطقية وهياكل البيانات المعقدة الأخرى مثل القواميس والقوائم في Ansible. تعتبر القائمة أو القاموس مثالاً للمتغير المتداخل.
الدور الرئيسي للمتغيرات المتداخلة هو تنظيم البيانات بشكل أكثر هرميًا مما يسهل قراءتها وصيانتها.
توفر المتغيرات المتداخلة أيضًا طريقة فعالة للغاية لإحالة قيمة فرعية ديناميكيًا استنادًا إلى قيمة متغير آخر.
إنشاء المتغيرات المتداخلة
يمكننا استخدام بناء جملة YAML لتحديد وتهيئة المتغيرات المتداخلة في Ansible. مثال على النحو التالي:
المستخدمين:لينوكسهينت:
معرف المستخدم: 1001
شل: '/ بن/باش'
مسؤل:
معرف التعريف: 1002
شل: '/ بن/zsh'
في المثال الموضح، قمنا بتعريف قاموس يسمى 'المستخدمين' مع قواميسين متداخلين آخرين لنظام Linuxhint والمستخدمين الإداريين.
مرجع المتغيرات المتداخلة
يمكننا الإشارة إلى المتغيرات المتداخلة في Ansible باستخدام علامة النقطة أو القوس. خذ بعين الاعتبار المثال التالي:
- التصحيح:الرسالة: '{{ users.linuxhint.shell }}'
في هذه الحالة، نستخدم العلامة النقطية للوصول إلى قيمة مفتاح الصدفة من قاموس 'linuxhint' المتداخل داخل قاموس 'المستخدمين'.
يُعد تدوين الأقواس مفيدًا جدًا أيضًا عند الإشارة إلى متغير ديناميكيًا. مثال على النحو التالي:
- مجموعة_الحقيقة:Select_user: 'لينكسهينت'
- التصحيح:
msg: '{{ users[selected_user].shell }}'
يؤدي هذا إلى جلب قيمة المفتاح المحدد.
تحديد المتغيرات المتداخلة Ansible
يمكننا تعيين المتغيرات المتداخلة في ملف المخزون، في قواعد Ansible، أو عبر الملفات المضمنة في Ansible.
دعونا نلقي نظرة على أمثلة مختلفة لتحديد المتغيرات المتداخلة في كل منها.
إنشاء متغيرات متداخلة في ملف المخزون Ansible
يوضح المثال التالي كيفية إنشاء المتغيرات المتداخلة في ملف مخزون Ansible:
[الويب]webserver1 ansible_host=192.168.1.10
[الويب:أين]
قواعد بيانات:
db1: 'postgresql'
ديسيبل 2: 'ماي إس كيو إل'
كما ترون، قمنا بتضمين متغيرين متداخلين داخل مجموعة قاعدة البيانات.
إنشاء متغيرات متداخلة في Ansible Playbook
يمكننا أيضًا تحديد المتغيرات المتداخلة في دليل التشغيل كما هو موضح في المثال التالي:
---- المضيفين: الويب
لمن:
التكوينات:
نجينكس:
المنفذ: 80
أباتشي:
المنفذ: 8080
مهام:
- الاسم: طباعة منفذ أباتشي
التصحيح:
الرسالة: '{{ configs.Apache.port }}'
التكرار على المتغيرات المتداخلة
يسمح لنا Ansible أيضًا بالتكرار على المتغيرات المتداخلة كما هو موضح في مثال دليل التشغيل التالي:
- المضيفين: المضيف المحليلمن:
خدمات:
نجينكس:
المنفذ: 80
الحالة: بدأت
أباتشي:
المنفذ: 8080
الحالة: متوقفة
مهام:
- الاسم: التأكد من أن الخدمات في الحالة المطلوبة
خدمة:
الاسم: '{{ item.key }}'
الحالة: '{{ item.value.state }}'
with_dict: '{{ خدمات }}'
يجب أن يتكرر المثال المعطى على كل خدمة ويتأكد من أنها في الحالة المطلوبة.
خاتمة
لقد استكشفنا وظيفة Ansible في تحديد المتغيرات المتداخلة والإشارة إليها لتوفير طريقة قوية لتنظيم وهيكلة البيانات لإدارة التكوين.