البرنامج التعليمي للمبتدئين - كتيبات التشغيل والمتغيرات والمخزون

Beginner S Tutorial Ansible Playbooks



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

تحتفظ ملفات Ansible Inventory بقائمة بالمضيفين الذين تريد تكوينهم أو إدارتهم باستخدام Ansible. يمكنك تجميع هؤلاء المضيفين وإدارتهم حسب المجموعات أيضًا. يمكنك أيضًا تمرير متغيرات مختلفة لكل مضيف أو لمجموعة من المضيفين.







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



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

إذا كنت ترغب في تجربة الأمثلة في هذه المقالة ،



1) يجب أن يكون Ansible مثبتًا على جهاز الكمبيوتر الخاص بك.
2) يجب أن يكون لديك على الأقل مضيف Ubuntu / Debian ومضيف CentOS / RHEL 8 مهيأ لأتمتة Ansible.





هناك العديد من المقالات على LinuxHint مخصصة لتثبيت Ansible وتكوين المضيفات من أجل أتمتة Ansible. يمكنك التحقق من هذه المقالات إذا لزم الأمر لمزيد من المعلومات.

إنشاء دليل المشروع

أولاً ، قم بإنشاء دليل المشروع ~ / مشروع / بالأمر التالي:

$مكدير -pv~/مشروع/كتب اللعب

انتقل إلى ملف ~ / مشروع / الدليل على النحو التالي:

$قرص مضغوط~/مشروع

ملف الجرد الأساسي:

قم بإنشاء ملف جرد أنسبل المضيفين في دليل المشروع بالأمر التالي:

$نانوالمضيفين

يمكنك كتابة عناوين IP للمضيفين الذين ترغب في تكوينهم / أتممتهم باستخدام Ansible في ملف المضيفين ملف الجرد.

192.168.20.167
192.168.20.168
192.168.20.169
192.168.20.170

بمجرد الانتهاء من هذه الخطوة ، احفظ الملف بالضغط على + X تليها و و .

إذا كنت ترغب في استخدام أسماء DNS بدلاً من عناوين IP في ملف الجرد ، فيمكنك القيام بذلك أيضًا.

إذا لم يكن لديك خادم DNS يعمل ، فيمكنك استخدام / etc / hosts ملف على جهاز الكمبيوتر الخاص بك لتحليل DNS المحلي.

لتحليل DNS المحلي ، افتح ملف / etc / hosts ملف بمحرر نصوص ( نانو ، في حالتي) على النحو التالي:

$سودو نانو /إلخ/المضيفين

اكتب عناوين IP وأسماء DNS التي تريدها على النحو التالي:

192.168.20.167 vm1.nodekite.com
192.168.20.168 vm2.nodekite.com
192.168.20.169 vm3.nodekite.com
192.168.20.170 vm4.nodekite.com

بمجرد الانتهاء من هذه الخطوة ، اضغط على + X تليها و و .

افتح ملف الجرد أنسبل المضيفين على النحو التالي:

$نانوالمضيفين

يمكنك الآن كتابة أسماء DNS للمضيفين الذين تريد تهيئتهم / أتممتهم باستخدام Ansible في ملف المضيفين ملف الجرد.

vm1.nodekite.com
vm2.nodekite.com
vm3.nodekite.com
vm4.nodekite.com

بمجرد الانتهاء ، احفظ ملف جرد المضيفين بالضغط على + X تليها و و .

اختبار الاتصال لجميع المضيفين

الآن ، يمكنك محاولة اختبار اتصال جميع المضيفين في ملف الجرد على النحو التالي:

$غير مقبول-أنايستضيف كل شيء-uغير مقبولم بينغ

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

أول دليل أنسبل الخاص بك

دعونا ننشئ كتاب لعب بسيط عن طريق Ansible ping_all_hosts.yaml في ال كتب اللعب / الدليل. سيؤدي هذا الإجراء إلى اختبار اتصال جميع المضيفين في ملف المضيفين ملف الجرد ، كما كان من قبل.

$نانوكتب اللعب/ping_all_hosts.yaml

اكتب الأسطر التالية في ملف ping_all_hosts.yaml ملف دليل أنسبل:

- المضيفون: الكل
المستخدم: غير صالح
مهام:
- الاسم: بينغ جميع المضيفين
بينغ:

هنا،

المضيفين: الكل - يختار جميع المضيفين من ملف الجرد المضيفين .
المستخدم: غير صالح - يخبر Ansible لـ SSH في المضيفين في ملف الجرد مثل ملف غير مقبول المستعمل.
مهام - جميع المهام التي سينفذها Ansible في المضيفين مذكورة هنا. عادة ما يكون لكل مهمة من المهام اسم وواحد أو أكثر من الخيارات المحددة للوحدة.

كتاب اللعب ping_all_hosts.yaml مهمة واحدة فقط ، تنفيذ الأمر ping لجميع المضيفين في ملف الجرد المضيفين . اسم المهمة هو بينغ جميع المضيفين ويستخدم بينغ وحدة.

ال بينغ الوحدة النمطية لا تحتاج إلى أي خيارات أخرى. لذا تركته فارغًا (لا يوجد شيء بعد القولون ، : )

بمجرد الانتهاء من هذه الخطوة ، احفظ الملف بالضغط على + X تليها و و .

يمكنك تشغيل ملف ping_all_hosts.yaml كتاب اللعب أنسبل على النحو التالي:

$ansible-playbook-أناالمضيفين كتب اللعب/ping_all_hosts.yaml

كما ترى ، فإن مهمة ping ناجحة في جميع المضيفين في ملف الجرد.

ملف تكوين بسيط Ansible

في المثال السابق ، كان عليك استخدام ملف -أنا خيار لإخبار أنسبل أي ملف جرد لاستخدامه. في حالتي ، إنه المضيفين ملف الجرد.

$ansible-playbook-أناالمضيفين كتب اللعب/ping_all_hosts.yaml

إذا كنت لا ترغب في تمرير ملف الجرد بامتداد -أنا الخيار في كل مرة تقوم فيها بتشغيل Ansible playbook ، كل ما عليك فعله هو تعيين ملف جرد افتراضي لمشروعك.

للقيام بذلك ، قم بإنشاء ملف تكوين Ansible جديد ansible.cfg في جذر مشروعك كما يلي:

$نانوansible.cfg

اكتب الأسطر التالية في ملف ansible.cfg ملف:

[الافتراضات]
جرد =./المضيفين

بمجرد الانتهاء ، احفظ الملف بالضغط على + X تليها و و .

يمكنك تشغيل نفس كتاب اللعب Ansible كما يلي:

$دفاتر اللعب غير المرغوبة/ping_all_hosts.yaml

كما ترى ، فإن دليل التشغيل يستخدم ملف المضيفين ملف الجرد بشكل افتراضي. لا يزال بإمكانك استخدام ملف -أنا خيار تحديد ملف جرد مختلف ، إذا كنت ترغب في ذلك. Ansible مرن للغاية.

تجميع المضيفين في ملف الجرد

لقد أوضحت لك حتى الآن كيفية تشغيل مجموعة من المهام (قواعد اللعبة) في جميع المضيفين في ملف المخزون. ولكن ماذا لو كنت تريد تشغيل مجموعة من المهام في بعض المضيفين ومجموعة أخرى من المهام في مضيفين آخرين؟ يمكنك تجميع المضيفين في ملف المخزون وتشغيل مهام مختلفة على المجموعات المضيفة.

في هذا القسم ، سأوضح لك كيفية تجميع المضيفين في ملف الجرد وكيفية العمل مع المجموعات المضيفة.

أولاً ، افتح ملف الجرد المضيفين على النحو التالي:

$نانوالمضيفين

اكتب الأسطر التالية في ملف المضيفين ملف الجرد:

[ديبيان 10]
vm1.nodekite.com
vm2.nodekite.com
[سنتوس 8]
vm3.nodekite.com
vm4.nodekite.com

هنا ، قمت بإنشاء مجموعتين مضيفتين: ديبيان 10 و سنتوس 8 .

في ال ديبيان 10 المجموعة ، لدي مضيفان: vm1.nodekite.com و vm2.nodekite.com

في ال سنتوس 8 المجموعة ، لدي مضيفان: vm3.nodekite.com و vm4.nodekite.com

بمجرد الانتهاء ، احفظ الملف بالضغط على + X تليها و و .

سنقوم الآن بإنشاء كتاب قواعد لعب جديد ping_debian10_hosts.yaml ، والتي ستعمل على إجراء اختبار ping للمضيفين كما كان من قبل ، ولكن فقط المضيفين في ملف ديبيان 10 المجموعة المضيفة.

قم بإنشاء كتاب اللعب ping_debian10_hosts.yaml في ال كتب اللعب / الدليل على النحو التالي:

$نانوكتب اللعب/ping_debian10_hosts.yaml

اكتب الأسطر التالية في ملف ping_debian10_hosts.yaml كتاب اللعب أنسبل:

- المضيفون: debian10
المستخدم: غير صالح
مهام:
- الاسم: Ping all Debian10المضيفين
بينغ:

بدلا من المضيفين: الكل ، لقد أضفت المضيفون: debian10 هنا. ديبيان 10 هي المجموعة المضيفة. سيتم تشغيل دليل التشغيل هذا فقط على المضيفين الموجودين في ديبيان 10 المجموعة المضيفة.

بمجرد الانتهاء ، احفظ الملف بالضغط على + X تليها و و .

قم بتشغيل كتيب اللعبة على النحو التالي:

$دفاتر اللعب غير المرغوبة/ping_debian10_hosts.yaml

كما ترون ، المضيفون فقط في ديبيان 10 تتعرض لضغوط من المجموعة المضيفة.

باستخدام نفس الطريقة ، قم بإنشاء كتاب لعب آخر ping_centos8_hosts.yaml على النحو التالي:

$نانوكتب اللعب/ping_centos8_hosts.yaml

اكتب الأسطر التالية في ملف ping_centos8_hosts.yaml كتاب اللعب أنسبل:

- المضيفون: centos8
المستخدم: غير صالح
مهام:
- الاسم: Ping all CentOS8المضيفين
بينغ:

لقد أضفت بنفس الطريقة المضيفون: centos8 هنا. سنتوس 8 هي المجموعة المضيفة. سيتم تشغيل دليل التشغيل هذا فقط على المضيفين الموجودين في سنتوس 8 المجموعة المضيفة.

بمجرد الانتهاء ، احفظ الملف بالضغط على + X تليها و و .

قم بتشغيل كتيب اللعبة على النحو التالي:

$دفاتر اللعب غير المرغوبة/ping_centos8_hosts.yaml

كما ترون ، المضيفون فقط في سنتوس 8 تتعرض لضغوط من المجموعة المضيفة.

أنواع المتغيرات الثابتة

هناك أنواع مختلفة من المتغيرات في أنسبل. أنواع المتغيرات الرئيسية هي متغيرات الحقائق غير المألوفة و المتغيرات المعرفة من قبل المستخدم .

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

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

المتغيرات المعرفة من قبل المستخدم بشكل أساسي من نوعين: متغيرات المجموعة و متغيرات المضيف .

أسبقية متغيرة ثابتة

أسبقية أنسيبل المتغيرة هي : متغيرات سطر الأوامر > متغيرات المضيف > متغيرات المجموعة

إذا قمت بتعيين نفس المتغير كمتغير المضيف ومتغير المجموعة ، فسيتم تطبيق متغير المضيف.

وبالمثل ، فإن المتغيرات التي تحددها من سطر الأوامر أثناء تشغيل دليل التشغيل ستحل محل كل من متغيرات المضيف والمجموعة.

العمل مع متغيرات الحقائق غير القابلة للكسر

في هذا القسم ، سأوضح لك كيفية العمل مع متغيرات الحقائق Ansible. لذا ، دعونا نبدأ!

يمكنك سرد جميع متغيرات Ansible Facts للمضيفين في ملف المضيفين ملف الجرد كالتالي:

$غير مقبول كل شيء-uغير مقبولماقامة

كما ترى ، يتم سرد جميع متغيرات Ansible Facts بتنسيق JSON. إنها قائمة طويلة جدا.

نظرًا لأن القائمة طويلة جدًا ، يمكنك فتحها باستخدام برنامج بيجر مثل أقل على النحو التالي:

$غير مقبول كل شيء-uغير مقبولماقامة| أقل

الآن ، يمكنك تمرير الإخراج لأعلى ولأسفل ولليسار ولليمين حسب الحاجة.

يمكنك أيضًا البحث عن أسماء المتغيرات من جهاز النداء. للقيام بذلك ، اضغط على / على لوحة المفاتيح. ثم اكتب سلسلة البحث ( اسم المضيف في حالتي) والصحافة .

كما ترى ، متغير الحقائق Ansible الذي يطابق سلسلة البحث هو ansible_hostname . يمكنك الضغط على ن للذهاب إلى المباراة القادمة و ص للذهاب إلى المباراة السابقة من جهاز النداء. هذه هي الطريقة التي تجد بها متغير الحقائق Ansible الذي تحتاجه لمشروع Ansible الخاص بك.

دعونا نرى الآن كيفية الوصول إلى متغيرات حقائق أنسبل.

إنشاء دليل جديد print_variable1.yaml على النحو التالي:

$نانوكتب اللعب/print_variable1.yaml

اكتب الأسطر التالية في ملف print_variable1.yaml ملف:

- المضيفون: الكل
المستخدم: غير صالح
مهام:
- طباعة اسماسم المضيفلجميع المضيفين
تصحيح:
الرسالة:'{{ansible_hostname}}'

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

msg هي المعلمة الوحيدة المطلوبة من التصحيح وحدة. ال msg تقبل المعلمة سلسلة بين علامات الاقتباس ، وهي الرسالة التي سيتم طباعتها على وحدة التحكم.

هنا، {{ اسم المتغير }} يستخدم التنسيق للوصول إلى متغير. في هذه الحالة، {{ansible_hostname}} يستخدم لطباعة ملف ansible_hostname متغير لكل من المضيفين في ملف الجرد.

بمجرد الانتهاء ، احفظ الملف بالضغط على + X تليها و و .

يمكنك أيضًا الوصول إلى متغير حقائق أنسبل مثل ansible_facts [اسم_متغير] . لذلك ansible_hostname سيصبح المتغير ansible_facts [اسم المضيف] .

يمكننا إعادة كتابة print_variable1.yaml مثل هذا أيضًا. سوف نحصل على نفس الناتج.

- المضيفون: الكل
المستخدم: غير صالح
مهام:
- طباعة اسماسم المضيفلجميع المضيفين
تصحيح:
الرسالة:'{{ansible_facts [' variable_name ']}}

قم بتشغيل كتاب التشغيل print_variable1.yaml على النحو التالي:

$دفاتر اللعب غير المرغوبة/print_variable1.yaml

كما ترى ، تتم طباعة اسم المضيف لكل مضيف في ملف المخزون على وحدة التحكم.

دعونا الآن نطبع عنوان IPv4 الافتراضي لكل مضيف مع اسم المضيف. كما ترى ، يمكن الوصول إلى عنوان IPv4 الافتراضي للمضيف باستخدام ملف عنوان ممتلكات ansible_default_ipv4 موضوع.

إنشاء دليل جديد print_variable2.yaml على النحو التالي:

$نانوكتب اللعب/print_variable2.yaml

اكتب الأسطر التالية في ملف print_variable2.yaml ملف:

- المضيفون: الكل
المستخدم: غير صالح
مهام:
- طباعة اسماسم المضيفلجميع المضيفين
تصحيح:
الرسالة:'{{ansible_hostname}} - {{ansible_default_ipv4.address}}'

هذا الدليل هو نفسه كما كان من قبل. الاختلاف الوحيد هو المتغير الجديد {{ansible_default_ipv4.address}} في ال msg خيار التصحيح وحدة.

بمجرد الانتهاء ، احفظ الملف بالضغط على + X تليها و و .

قم بتشغيل print_variable2.yaml كتاب اللعب على النحو التالي:

$دفاتر اللعب غير المرغوبة/print_variable2.yaml

كما ترى ، تتم طباعة عنوان IPv4 الافتراضي واسم مضيف المضيفين على وحدة التحكم.

إذن ، هذه هي الطريقة التي تعمل بها مع متغيرات Ansible Facts.

تعيين المتغيرات المعرفة من قبل المستخدم من سطر الأوامر:

في هذا القسم ، سأوضح لك كيفية تعيين المتغيرات المعرفة من قبل المستخدم من سطر الأوامر أثناء تشغيل Ansible playbooks.

أولاً ، قم بإنشاء كتاب قواعد لعب جديد print_variable3.yaml على النحو التالي:

$نانوكتب اللعب/print_variable3.yaml

اكتب الأسطر التالية في ملف print_variable3.yaml ملف:

- المضيفون: الكل
المستخدم: غير صالح
مهام:
- طباعة اسمأمرمتغير الخط
تصحيح:
الرسالة:'مرحبًا {{username}}'

هنا ، لقد استخدمت ملف التصحيح وحدة لطباعة الرسالة مرحبًا {{username}} . اسم االمستخدم هو متغير سيتم استبداله عند تشغيل قواعد اللعبة.

بمجرد الانتهاء ، احفظ الملف بالضغط على + X تليها و و .

قم بتشغيل كتاب التشغيل print_variable3.yaml على النحو التالي:

$ansible-playbook 'اسم المستخدم = بوب'كتب اللعب/print_variable3.yaml

ملاحظة: هنا، يستخدم الخيار لتمرير اسم االمستخدم متغير مع القيمة بوب إلى كتاب اللعبة print_variable3.yaml من سطر الأوامر.

كما ترى الرسالة مرحبًا بوب تتم طباعته على وحدة التحكم.

دعونا الآن نكتشف كيفية تمرير متغيرات متعددة من سطر الأوامر.

إنشاء دليل جديد print_variable4.yaml على النحو التالي:

$نانوكتب اللعب/print_variable4.yaml

اكتب الأسطر التالية في ملف print_variable4.yaml ملف:

- المضيفون: الكل
المستخدم: غير صالح
مهام:
- الاسم: طباعة المتغيرات المعرفة من قبل المستخدم
تصحيح:
الرسالة:'username = {{username}} http_port = {{http_port}}'

يجب أن يكون دليل اللعبة مألوفًا لك الآن. كل ما تفعله هو طباعة المتغيرين اسم االمستخدم و http_port على وحدة التحكم.

بمجرد الانتهاء ، احفظ الملف بالضغط على + X تليها و و .

يمكنك الآن تمرير اسم االمستخدم و http_port متغير إلى كتاب اللعب باستخدام نوعين مختلفين الخيار على النحو التالي:

$ ansible-playbook 'اسم المستخدم = بوب' 'http_port = 8080'
كتب اللعب/print_variable4.yaml

أو يمكنك ببساطة فصل المتغيرات بمسافة بيضاء ، على النحو التالي:

$ ansible-playbook 'اسم المستخدم = بوب http_port = 8080'
كتب اللعب/print_variable4.yaml

كما ترون ، فإن اسم االمستخدم و http_port يتم طباعة المتغيرات على وحدة التحكم.

العمل مع متغيرات المجموعة المعرفة من قبل المستخدم

لنفترض أنك تريد إضافة بعض المتغيرات إلى مجموعة من المضيفين. من السهل جدًا القيام بهذا الإجراء في Ansible.

أولاً ، افتح ملف المضيفين ملف الجرد كالتالي:

$نانوالمضيفين

اكتب الأسطر التالية في ملف المضيفين ملف الجرد:

[ديبيان 10]
vm1.nodekite.com
vm2.nodekite.com
[ديبيان 10: فارز]
اسم المستخدم = ليلي
http_port =4343
[سنتوس 8]
vm3.nodekite.com
vm4.nodekite.com
[centos8: فارز]
اسم المستخدم = بوب
http_port =7878

كما ترى ، لقد أنشأت قسمًا جديدًا [debian10: vars] ل ديبيان 10 المجموعة المضيفة وإضافة المتغيرات ( اسم االمستخدم و http_port ) ل ديبيان 10 المجموعة المضيفة هناك.

بنفس الطريقة ، قمت بإنشاء قسم جديد [centos8: vars] ل سنتوس 8 المجموعة المضيفة وإضافة المتغيرات ( اسم االمستخدم و http_port ) ل سنتوس 8 المجموعة المضيفة هناك.

بمجرد الانتهاء ، احفظ ملف المضيفين ملف الجرد بالضغط على + X تليها و و .

قم بتشغيل print_variable4.yaml كتب اللعب على النحو التالي:

$دفاتر اللعب غير المرغوبة/print_variable4.yaml

كما ترى ، يتم تمرير المتغيرات الصحيحة إلى كل من المضيفين اعتمادًا على المجموعة المضيفة الخاصة بهم.

العمل مع متغيرات المضيف المعرفة من قبل المستخدم

في هذا القسم ، سأوضح لك كيفية تعيين المتغيرات لمضيفين معينين في ملف الجرد.

أولاً ، افتح ملف المضيفين ملف الجرد كالتالي:

$نانوالمضيفين

لإضافة متغيرات إلى مضيف معين (على سبيل المثال ، vm1.nodekite.com ) ، فقط أضف مسافة / علامة تبويب بعد اسم IP / DNS للمضيف واكتب المتغيرات الخاصة بك ، كما هو موضح في لقطة الشاشة أدناه.

يمكنك إضافة متغيرات متعددة كذلك. ببساطة افصل بين المتغيرات بمسافة.

بمجرد الانتهاء ، احفظ ملف الجرد بالضغط على + X تليها و و .

قم بتشغيل print_variable4.yaml كتب اللعب على النحو التالي:

$دفاتر اللعب غير المرغوبة/print_variable4.yaml

كما ترى ، يتم تعيين المتغيرات فقط لـ vm1.nodekite.com مضيف. لدى المضيفين الآخرين متغيرات المجموعة المطبقة عليهم.

إنشاء ملفات الجرد بسرعة مع النطاقات

يمكنك استخدام النطاقات لإنشاء ملفات جرد Ansible بسرعة إذا كانت عناوين IP للمضيف أو أسماء DNS متسقة (على سبيل المثال ، لها تنسيق معين).

في الأمثلة السابقة ، لقد استخدمت المضيفين vm1.nodekite.com و vm2.nodekite.com و vm3.nodekite.com و vm4.nodekite.com . بدلاً من الكتابة في 4 أسطر ، كان بإمكاني الكتابة vm [1: 4] .nodekite.com في ملف الجرد.

لتجربة النطاقات ، افتح ملف المضيفين ملف الجرد كالتالي:

$نانوالمضيفين

قم بإزالة جميع المضيفات والمتغيرات من ملفات الجرد.

يمكننا الآن استبدال vm1.nodekite.com و vm2.nodekite.com مع vm [1: 2] .nodekite.com ل ديبيان 10 المجموعة المضيفة على النحو التالي.

بنفس الطريقة ، يمكننا استبدال vm3.nodekite.com و vm4.nodekite.com مع vm [3: 4] .nodekite.com ل سنتوس 8 المجموعة المضيفة.

بمجرد الانتهاء ، احفظ الملف بالضغط على + X تليها و و .

قم بتشغيل ping_all_hosts.yaml على النحو التالي:

$دفاتر اللعب غير المرغوبة/ping_all_hosts.yaml

كما ترى ، تم توسيع نطاقات المضيف عندما قمت بتشغيل كتيب اللعبة.

تخزين المتغيرات في ملفات مختلفة

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

بشكل افتراضي ، يبحث Ansible عن متغيرات المجموعة في ملف group_vars / متغيرات الدليل والمضيف في ملف host_vars / الدليل.

لذلك ، قم بإنشاء ملف group_vars / و host_vars / الدليل على النحو التالي:

$مكدير -pv {المضيف ، المجموعة}_ملك من

لتعيين متغيرات المجموعة لـ ديبيان 10 المجموعة المضيفة ، قم بإنشاء ملف ديبيان 10 (نفس اسم المجموعة) في ملف group_vars / الدليل على النحو التالي:

$نانوgroup_vars/ديبيان 10

اكتب المتغيرات الخاصة بك على النحو التالي:

اسم المستخدم: ليلي
http_port: 4343

بمجرد الانتهاء ، احفظ الملف بالضغط على + X متبوعًا بـ Y و .

بنفس الطريقة ، لتعيين متغيرات المجموعة لـ سنتوس 8 المجموعة المضيفة ، قم بإنشاء ملف سنتوس 8 (نفس اسم المجموعة) في ملف group_vars / الدليل على النحو التالي:

$نانوgroup_vars/سنتوس 8

اكتب المتغيرات الخاصة بك على النحو التالي:

اسم المستخدم: بوب
http_port: 7878

بمجرد الانتهاء ، احفظ الملف بالضغط على + X متبوعًا بـ Y و .

قم بتشغيل print_variable4.yaml كتاب اللعب على النحو التالي:

$كتب اللعب ansible-playbooks/print_variable4.yaml

كما ترى ، تم تعيين متغيرات المجموعة بشكل صحيح لكل مجموعة مضيفة.

لتعيين متغيرات المضيف للمضيف vm1.nodekite.com ، قم بإنشاء ملف vm1.nodekite.com (مثل اسم المضيف أو عنوان IP) في ملف host_vars / الدليل على النحو التالي:

$نانوvm1.nodekite.com

اكتب متغيرات مضيفك على النحو التالي:

اسم المستخدم: Alex
http_port: 7788

بمجرد الانتهاء ، احفظ الملف بالضغط على + X متبوعًا بـ Y و .

قم بتشغيل print_variable4.yaml كتاب اللعب على النحو التالي:

$ ansible-playbooks/print_variable4.yaml
[

كما ترى ، تم تعيين متغيرات المضيف بشكل صحيح للمضيف vm1.nodekite.com .

العمل مع الحلقات في أنسبل

في هذا القسم ، سأوضح لك كيفية استخدام الحلقات في Ansible.

أولاً ، قم بإنشاء كتاب قواعد لعب جديد loop1.yaml في ال كتب اللعب / الدليل على النحو التالي:

$نانوكتب اللعب/loop1.yaml

اكتب الأسطر التالية في ملف loop1.yaml كتاب اللعب:

- المضيفون: الكل
المستخدم: غير صالح
مهام:
- الاسم: طباعة قائمة المستخدم
تصحيح:
الرسالة:'المستخدم: {{item}}'
مع_ العناصر:
- اليكس
- بوب
- ليلى

هنا ، لدي مهمة واحدة تطبع قائمة بالمستخدمين الذين يستخدمون التكرار الحلقي.

لتعيين قيم التكرار للمهمة ، يمكنك استخدام مع_العناصر وحدة. ثم تضيف القيم واحدة تلو الأخرى.

مع_ العناصر:
- اليكس
- بوب
- ليلى

يمكنك الوصول إلى قيمة التكرار الحالي باستخدام غرض عامل.

تصحيح:
الرسالة:'المستخدم: {{item}}'

بمجرد الانتهاء ، احفظ الملف بالضغط على + X تليها و و .

قم بتشغيل loop1.yaml كتاب اللعب على النحو التالي:

$دفاتر اللعب غير المرغوبة/loop1.yaml

كما ترى ، تم تشغيل نفس المهمة لكل عنصر على كل مضيف. إذن ، الحلقة تعمل.

العمل مع الشروط في أنسبل

إذا كنت ترغب في تشغيل المهام بناءً على شروط معينة ، فهذا القسم مناسب لك.

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

$نانوكتب اللعب/الشرط 1

اكتب الأسطر التالية في ملف الشرط 1 كتاب اللعب:

- المضيفون: الكل
المستخدم: غير صالح
مهام:
- الاسم: قم بتشغيل هذه المهمة على دبيان فقط
تصحيح:
الرسالة:'هذه المهمة تعمل على دبيان'
متى: ansible_facts['توزيع']=='ديبيان'

هنا،

ansible_facts ['Distribution'] == 'Debian' يستخدم للتحقق مما إذا كان توزيع يكون ديبيان . لن يتم تشغيل المهمة إلا إذا كان التوزيع هو دبيان.

ال ansible_facts ['التوزيع'] يستخدم للوصول إلى متغير Ansible Facts توزيع_غير صالح . يمكنك أيضًا التحقق من إصدار التوزيع باستخدام امتداد ansible_distribution_major_version عامل.

بمجرد الانتهاء ، احفظ الملف بالضغط على + X تليها و و .

قم بتشغيل الشرط 1 كتاب اللعب على النحو التالي:

$دفاتر اللعب غير المرغوبة/الشرط 1

كما ترى ، تم تشغيل المهمة فقط على مضيفي دبيان. لم يتم تشغيل المهمة على مضيفي CentOS.

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

إنشاء دليل جديد شرط 2. yaml على النحو التالي:

$نانوكتب اللعب/شرط 2. yaml

اكتب الأسطر التالية في ملف شرط 2. yaml ملف:

- المضيفون: الكل
المستخدم: غير صالح
مهام:
- الاسم: قم بتشغيل هذه المهمة على دبيان فقط10
تصحيح:
الرسالة:'هذه المهمة تعمل على دبيان 10'
متى: ansible_facts['توزيع']=='ديبيان'
و ansible_facts['Distribution_major_version']=='10'

هنا ، لن يتم تشغيل المهمة إلا إذا كان التوزيع هو دبيان ( ansible_facts ['Distribution'] == 'Debian' ) والإصدار هو 10 ( ansible_facts ['Distribution_major_version'] == '10' ). إذا كان كلا الشرطين صحيحين ، فسيتم تشغيل المهمة. Othewise ، لن تعمل المهمة.

لقد استخدمت ملف و كلمة رئيسية للتحقق مما إذا كانت كلتا الحالتين صحيحة هنا. إذا كنت تريد التحقق مما إذا كان أي من الشروط صحيحًا ، فيمكنك استخدام الامتداد أو الكلمات الرئيسية بدلا من ذلك.

بمجرد الانتهاء ، احفظ الملف بالضغط على + X تليها و و .

قم بتشغيل كتاب التشغيل شرط 2. yaml على النحو التالي:

$دفاتر اللعب غير المرغوبة/شرط 2. yaml

كما ترى ، تم تشغيل المهمة فقط على مضيفي دبيان 10.

دعونا نغير قواعد اللعبة شرط 2. yaml لتشغيل المهمة فقط على مضيفات دبيان 8 على النحو التالي.

كما ترى ، تم تخطي جميع المضيفات لأنني لا أملك أي مضيفات Debian 8 في ملف الجرد.

العمل مع وحدة ملائمة أنسبل

ال ملائم يتم استخدام الوحدة النمطية لـ Ansible لتثبيت حزمة برامج معينة على مضيفي Ubuntu / Debian. دعونا نرى كيفية استخدام هذه الوحدة.

أولاً ، قم بإنشاء كتاب قواعد لعب جديد apt1.yaml في ال كتب اللعب / الدليل على النحو التالي:

$نانوكتب اللعب/apt1.yaml

اكتب الأسطر التالية في ملف apt1.yaml كتاب اللعب:

- المضيفون: debian10
المستخدم: غير صالح
أصبح حقيقيا
مهام:
- الاسم: تثبيت اباتشي 2
ملائم:
الاسم: اباتشي 2
الدولة: الأحدث

ال ملائم الوحدة النمطية تتطلب فقط اسم من الحزمة التي ترغب في تثبيتها / ترقيتها / إزالتها و حالة من الحزمة.

هنا ، أحاول تثبيت اباتشي 2 صفقة ( الاسم: اباتشي 2 ) على مضيفي Debian 10. نظرًا لأنني أحاول تثبيت حزمة وترقيتها أيضًا في حالة توفر إصدار جديد ، فإن حالة يجب ان يكون الأحدث .

حالة يقبل أيضًا الخيارات التالية:

- غائب - ستتم إزالة الحزمة إذا كانت مثبتة بالفعل.
- الأحدث - ستتم ترقية الحزمة في حالة توفر تحديث. إذا لم تكن الحزمة مثبتة بالفعل ، فسيتم تثبيتها.
- هدية - سيتم تثبيت الحزمة إذا لم تكن مثبتة بالفعل. لكن لن تتم ترقية الحزمة في حالة توفر تحديث.

لاحظ أنني أضفت أصبح حقيقيا في كتاب اللعب. هذا سوف يعطي غير مقبول امتيازات المستخدم sudo لتعديل بنية نظام الملفات (أي تثبيت / ترقية / إزالة الحزم). بدون أصبح حقيقيا ، ال ملائم الوحدة النمطية لن تكون قادرة على تثبيت اباتشي 2 صفقة.

بمجرد الانتهاء ، احفظ كتاب التشغيل بالضغط على + X تليها و و .

قم بتشغيل apt1.yaml كتاب اللعب على النحو التالي:

$دفاتر اللعب غير المرغوبة/apt1.yaml

كما ترى ، تم تشغيل دليل التشغيل بنجاح على مضيفي دبيان 10.

كما ترون ، فإن اباتشي 2 الحزمة مثبتة على مضيفي دبيان 10.

العمل مع Ansible dnf / yum Module

ال dnf و يم يتم استخدام وحدة Ansible لتثبيت حزمة برامج محددة على مضيفي CentOS / RHEL. يمكنك استخدام هذه الوحدة بنفس الطريقة التي استخدمتها مع ملائم الوحدة النمطية في القسم السابق من هذه المقالة.

كلا ال dnf و يم الوحدات النمطية تقبل نفس المعلمات. يمكنك استخدام ملف dnf الوحدة النمطية على مضيفي CentOS / RHEL 8 ، و يم على CentOS / RHEL 7 أو أكبر.

دعونا الآن نلقي نظرة على مثال لهذه الوحدة.

أولاً ، قم بإنشاء كتاب قواعد لعب جديد dnf1.yaml في ال كتب اللعب / الدليل على النحو التالي:

$نانوكتب اللعب/dnf1.yaml

اكتب الأسطر التالية في ملف dnf1.yaml كتاب اللعب:

- المضيفون: centos8
المستخدم: غير صالح
أصبح حقيقيا
مهام:
- الاسم: قم بتثبيت حزمة httpd
dnf:
الاسم: httpd
الدولة: الأحدث

ال dnf و يم الوحدة النمطية تتطلب فقط اسم من الحزمة التي تريد تثبيتها / ترقيتها / إزالتها و حالة من الحزمة.

هنا ، أحاول تثبيت httpd صفقة ( الاسم: httpd ) على مضيفي CentOS 8. نظرًا لأنني أحاول تثبيت حزمة ، وأود أيضًا ترقيتها في حالة توفر إصدار جديد ، فإن حالة يجب ان يكون الأحدث .

حالة يقبل الخيارات التالية:

- غائب - ستتم إزالة الحزمة إذا كانت مثبتة بالفعل.
- الأحدث - ستتم ترقية الحزمة في حالة توفر تحديث. إذا لم تكن الحزمة مثبتة بالفعل ، فسيتم تثبيتها.
- هدية - سيتم تثبيت الحزمة إذا لم تكن مثبتة بالفعل. لكن لن تتم ترقية الحزمة في حالة توفر تحديث.

لاحظ أنني أضفت أصبح حقيقيا في كتاب اللعب. هذا يعطي غير مقبول امتيازات المستخدم sudo لتعديل بنية نظام الملفات (أي تثبيت / ترقية / إزالة الحزم). بدون أصبح حقيقيا ، ال ملائم الوحدة النمطية لن تكون قادرة على تثبيت httpd صفقة.

بمجرد الانتهاء ، احفظ كتاب التشغيل بالضغط على + X تليها و و .

قم بتشغيل dnf1.yaml كتاب اللعب على النحو التالي:

$دفاتر اللعب غير المرغوبة/dnf1.yaml

كما ترى ، تم تشغيل دليل اللعبة بنجاح على مضيف CentOS 8.

العمل مع وحدة خدمة أنسبل

ال الخدمات يتم استخدام وحدة Ansible لبدء ، وإيقاف ، وإعادة تشغيل ، وتمكين (إضافة خدمة إلى بدء التشغيل) ، وتعطيل (إزالة الخدمة من بدء التشغيل) الخدمات في مضيفيك.

في الأقسام السابقة ، أوضحت لك كيفية تثبيت حزمة خادم Apache HTTP باستخدام Ansible ملائم و dnf و يم وحدات. دعونا الآن نتأكد من تشغيل خدمة خادم Apache HTTP وإضافتها إلى بدء تشغيل النظام.

سأعمل مع مضيفي دبيان 10. ولكن ، يمكنك العمل مع مضيفي CentOS 8 ، إذا كنت ترغب في ذلك. ببساطة اضبط دليل التشغيل وفقًا لذلك.

أولاً ، قم بإنشاء كتاب لعب جديد لـ Ansible apt2.yaml على النحو التالي:

$نانوكتب اللعب/apt2.yaml

اكتب الأسطر التالية في ملف apt2.yaml كتاب اللعب:

- المضيفون: debian10
المستخدم: غير صالح
أصبح حقيقيا
مهام:
- الاسم: تثبيت اباتشي 2
ملائم:
الاسم: اباتشي 2
الدولة: الأحدث
- الاسم: ابدأ خدمة اباتشي 2
الخدمات:
الاسم: اباتشي 2
الدولة: بدأت
مُمكّن: صحيح

هنا ، أضفت مهمة جديدة ، ابدأ خدمة اباتشي 2 .

الاسم: اباتشي 2 - الخدمة التي أعمل عليها هي اباتشي 2 .

الدولة: بدأت - يجب أن تكون الخدمة قيد التشغيل.

مُمكّن: صحيح - يجب إضافة الخدمة إلى بدء تشغيل النظام.

ال حالة المعلمة تقبل القيم الأخرى.

- معاد تحميلها - يجب على الخدمة إعادة تحميل ملفات التكوين.
- إعادة - يجب إعادة تشغيل الخدمة.
- بدأت - يجب أن تكون الخدمة قيد التشغيل. إذا لم تكن الخدمة قيد التشغيل ، فابدأ الخدمة.
- توقفت - يجب ايقاف الخدمة. إذا كانت الخدمة قيد التشغيل ، فقم بإيقاف الخدمة.

قم بتشغيل كتاب التشغيل apt2.yaml على النحو التالي:

$دفاتر اللعب غير المرغوبة/apt2.yaml

كما ترى ، تم تشغيل دليل التشغيل بنجاح.

كما ترون ، فإن اباتشي 2 الخدمة قيد التشغيل على مضيفي دبيان 10.

العمل مع وحدة نسخة أنسبل

أنسبل ينسخ يتم استخدام الوحدة النمطية بشكل أساسي لنسخ الملفات من جهاز الكمبيوتر الخاص بك إلى المضيفين البعيدين.

في القسم السابق ، قمت بتثبيت خادم الويب Apache 2 على مضيفي Debian 10. دعونا الآن ننسخ ملف index.html ملف إلى webroot لمضيفي دبيان 10.

أولاً ، قم بإنشاء دليل جديد الملفات / على النحو التالي:

$مكدير -الخامسالملفات

قم بإنشاء ملف جديد index.html في ال الملفات / الدليل على النحو التالي:

$نانوالملفات/index.html

اكتب الأسطر التالية في ملف index.html ملف:


< لغة البرمجة >
< رئيس >
< لقب >خادم الويب بواسطة Ansible</ لقب >
</ رئيس >
< هيئة >
< h1 >مرحبًا بك في LinuxHint</ h1 >
< ص >تم نشر خادم الويب هذا مع Ansible.</ ص >
</ هيئة >
</ لغة البرمجة >

بمجرد الانتهاء ، احفظ الملف بالضغط على + X تليها و و .

قم بإنشاء كتاب لعب جديد لـ Ansible apt3.yaml على النحو التالي:

$نانوكتب اللعب/apt3.yaml

اكتب الأسطر التالية في ملف apt3.yaml ملف:

- المضيفون: debian10
المستخدم: غير صالح
أصبح حقيقيا
مهام:
- الاسم: تثبيت اباتشي 2
ملائم:
الاسم: اباتشي 2
الدولة: الأحدث
- الاسم: نسخ index.html إلى الخادم
ينسخ:
src: ../الملفات/index.html
الوجهة:/أين/www/لغة البرمجة/index.html
الوضع: 0644
المالك: www-data
المجموعة: www-data
- الاسم: ابدأ خدمة اباتشي 2
الخدمات:
الاسم: اباتشي 2
الدولة: بدأت
مُمكّن: صحيح

هنا ، المهمة انسخ index.html إلى الخادم نسخ index.html من الملفات / دليل إلى / var / www / html / دليل مضيفي دبيان 10.

src: ../files/index.html - مسار الملف المصدر.
dest: /var/www/html/index.html - مسار الملف الوجهة.
الوضع: 0644 - صلاحيات مستخدم الملف (6 - قراءة وكتابة) والمجموعة (4 - قراءة) وغيرها (4 - قراءة).
المالك: www-data - اضبط مالك الملف على www-data .
المجموعة: www-data - اضبط مجموعة الملف على www-data .

بمجرد الانتهاء ، احفظ الملف بالضغط على + X تليها و و .

قم بتشغيل apt3.yaml كتاب اللعب على النحو التالي:

$دفاتر اللعب غير المرغوبة/apt3.yaml

كما ترون ، المهمة انسخ index.html إلى الخادم ناجح.

كما ترى ، فإن index.html تم نسخ الملف إلى مضيفي دبيان 10.

كما ترى ، يخدم خادم الويب Debian 10 ملف index.html الصفحة التي نسختها للتو إلى مضيفي دبيان 10.

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