في أبسط أشكاله ، الجرد هو ملف ثابت. يعد هذا مثاليًا عند بدء استخدام Ansible ، ولكن مع توسع الأتمتة ، تصبح غير كافية.
ولهذا السبب:
- كيف يمكن تحديث قائمة كاملة بالعقد المراقبة والحفاظ عليها عندما يتغير شيء ما باستمرار ، وعندما تظهر أعباء العمل - وبعدها العقد التي تعمل عليها - وتختفي؟
- -, ?
تعطي الإجابات على هذين السؤالين مخترعًا ديناميكيًا (الجرد الديناميكي أ ) - البرنامج النصي أو المكون الإضافي الذي يتطلع إلى أن يكون وحدات الأتمتة ، في إشارة إلى مصدر الحقيقة (مصدر الحقيقة). بالإضافة إلى ذلك ، يقوم المخزون الديناميكي تلقائيًا بتصنيف العقد إلى مجموعات بحيث يمكنك تحديد الأنظمة المستهدفة بدقة أكبر لتنفيذ أتمتة Ansible. تمنح
المكونات الإضافية للمخزون مستخدم Ansible القدرة على الوصول إلى المنصات الخارجية للعثور ديناميكيًا على العقد المستهدفة واستخدام هذه الأنظمة الأساسية كمصدر للحقيقة عند تكوين قوائم الجرد. تتضمن قائمة مصادر Ansible القياسية الأنظمة الأساسية السحابية AWS EC2 و Google GCP و Microsoft Azure ، وهناك العديد من مكونات المخزون الإضافية لـ Ansible.
يأتي Ansible Tower مع عدد من المكونات الإضافية للمخزون التي تعمل مباشرة خارج الصندوق ، بالإضافة إلى المنصات السحابية المذكورة أعلاه ، توفر التكامل مع VMware vCenter و Red Hat OpenStack Platform و Red Hat Satellite. بالنسبة لهذه المكونات الإضافية ، يكفي توفير بيانات اعتماد للاتصال بالمنصة المستهدفة ، وبعد ذلك يمكن استخدامها كمصدر لبيانات المخزون في برج أنسبل.
بالإضافة إلى المكونات الإضافية القياسية المتوفرة مع Ansible Tower ، هناك إضافات مخزون أخرى يدعمها مجتمع Ansible. مع الانتقال إلى مجموعات محتوى Red Hat Ansible ، تم تضمين هذه المكونات الإضافية في مجموعاتها الخاصة.
في هذا المنشور ، سنأخذ مثالاً على العمل مع مكون إضافي للجرد لـ ServiceNow ، وهو نظام أساسي لإدارة خدمات تكنولوجيا المعلومات ، حيث يقوم العملاء غالبًا بتخزين معلومات حول جميع أجهزتهم في CMDB. بالإضافة إلى ذلك ، يمكن أن يحتوي CMDB على سياق مفيد للأتمتة ، مثل معلومات حول مالكي الخادم ومستويات الخدمة (الإنتاج / غير الإنتاج) والتحديثات المثبتة ونوافذ الصيانة. يمكن أن يعمل المكون الإضافي Ansible للمخزون مع ServiceNow CMDB وهو جزء من مجموعة servicenow على بوابة galaxy.ansible.com .
مستودع Git
لاستخدام مكون إضافي للجرد من المجموعة في برج أنسيبل ، يجب تعيينه كمصدر للمشروع. في Ansible Tower ، المشروع عبارة عن تكامل مع نوع من أنظمة التحكم في الإصدار ، مثل مستودع git ، والذي يمكن استخدامه لمزامنة ليس فقط كتب التشغيل الآلي ، ولكن أيضًا المتغيرات وقوائم المخزون.
مستودعنا في الواقع بسيط للغاية:
├── collections
│ └── requirements.yml
└── servicenow.yml
يحتوي ملف servicenow.yml على تفاصيل مخزون البرنامج المساعد. في حالتنا ، نحدد ببساطة الجدول في CMDB ServiceNow الذي نريد استخدامه. وأيضًا قمنا بتعيين الحقول التي ستتم إضافتها كمتغيرات عقدة ، بالإضافة إلى معلومات معينة عن المجموعات التي نريد إنشاءها.
$ cat servicenow.yml
plugin: servicenow.servicenow.now
table: cmdb_ci_linux_server
fields: [ip_address,fqdn,host_name,sys_class_name,name,os]
keyed_groups:
- key: sn_sys_class_name | lower
prefix: ''
separator: ''
- key: sn_os | lower
prefix: ''
separator: ''
يرجى ملاحظة أن هذا لا يحدد مثيل ServiceNow الذي سنتصل به بأي شكل من الأشكال ، ولا يحدد أي بيانات اعتماد للاتصال. سنقوم بتهيئة كل هذا لاحقًا في برج أنسبل. هناك حاجة إلى
ملف collection / requirements.yml حتى يتمكن Ansible Tower من تنزيل المجموعة المطلوبة وبالتالي الحصول على المكون الإضافي المطلوب للمخزون. بخلاف ذلك ، سيتعين علينا تثبيت هذه المجموعة يدويًا وصيانتها على جميع عقد Ansible Tower الخاصة بنا.
$ cat collections/requirements.yml
---
collections:
- name: servicenow.servicenow
بمجرد دفع هذا التكوين إلى التحكم في المصدر ، يمكننا إنشاء مشروع في Ansible Tower يرتبط بالمستودع المقابل. يربط المثال أدناه برج أنسبل بمستودع جيثب الخاص بنا. انتبه إلى عنوان URL لـ SCM: فهو يسمح لك بتسجيل حساب للاتصال بمستودع خاص ، بالإضافة إلى تحديد فرع معين أو علامة أو الالتزام بالسداد.

إنشاء بيانات اعتماد ServiceNow
كما ذكرنا ، لا يحتوي التكوين الموجود في المستودع الخاص بنا على بيانات اعتماد للاتصال بـ ServiceNow ولا يوضح مثيل ServiceNow الذي سنتواصل معه. لذلك ، لتعيين هذه البيانات ، سننشئ بيانات اعتماد في برج أنسبل. وفقًا لتوثيق المكون الإضافي للمخزون ServiceNow ، هناك عدد من متغيرات البيئة التي سنقوم من خلالها بتعيين معلمات الاتصال ، على سبيل المثال ، مثل هذا:
= username
The ServiceNow user account, it should have rights to read cmdb_ci_server (default), or table specified by SN_TABLE
set_via:
env:
- name: SN_USERNAME
في هذه الحالة ، إذا تم تعيين متغير البيئة SN_USERNAME ، فسيستخدمه المكون الإضافي للجرد كحساب للاتصال بـ ServiceNow.
نحتاج أيضًا إلى تعيين متغيري SN_INSTANCE و SN_PASSWORD.
ومع ذلك ، لا يحتوي Ansible Tower على مثل هذا النوع من بيانات الاعتماد حيث يمكن للمرء تحديد هذه البيانات لـ ServiceNow. لكن Ansible Tower يسمح لنا بتحديد أنواع بيانات الاعتماد المخصصة ، يمكنك قراءة المزيد حول هذا الموضوع في المقالة "Ansible Tower Feature Spotlight: Custom Credentials" .
في حالتنا ، يبدو تكوين الإدخال لبيانات الاعتماد المخصصة لـ ServiceNow كما يلي:
fields:
- id: SN_USERNAME
type: string
label: Username
- id: SN_PASSWORD
type: string
label: Password
secret: true
- id: SN_INSTANCE
type: string
label: Snow Instance
required:
- SN_USERNAME
- SN_PASSWORD
- SN_INSTANCE
سيتم عرض بيانات الاعتماد هذه كمتغيرات بيئة تحمل الاسم نفسه. هذا موصوف في تكوين الحاقن:
env:
SN_INSTANCE: '{{ SN_INSTANCE }}'
SN_PASSWORD: '{{ SN_PASSWORD }}'
SN_USERNAME: '{{ SN_USERNAME }}'
لذلك ، حددنا نوع بيانات الاعتماد التي نحتاجها ، والآن يمكنك إضافة حساب ServiceNow وتعيين المثيل واسم المستخدم وكلمة المرور ، على النحو التالي:

نقوم بإنشاء المخزون
لذلك نحن الآن على استعداد لإنشاء مخزون في برج أنسبل. دعنا نسميها ServiceNow:

بعد إنشاء المخزون ، يمكننا إرفاق مصدر بيانات به. نشير هنا إلى المشروع الذي أنشأناه سابقًا وأدخل المسار إلى ملف جرد YAML الخاص بنا في مستودع التحكم بالمصادر ، وفي حالتنا يكون servicenow.yml في جذر المشروع. بالإضافة إلى ذلك ، يجب أن يكون حساب ServiceNow ملزمًا.

للتحقق من كيفية عمل كل شيء ، دعنا نحاول المزامنة مع مصدر البيانات بالنقر فوق الزر "مزامنة الكل". إذا تم تكوين كل شيء بشكل صحيح ، فيجب استيراد العقد إلى مخزوننا:

يرجى ملاحظة أن المجموعات التي نحتاجها قد تم إنشاؤها أيضًا.
خاتمة
في هذا المنشور ، نظرنا في كيفية استخدام المكونات الإضافية للمخزون من المجموعات في Ansible Tower باستخدام المكون الإضافي ServiceNow كمثال. لقد قمنا أيضًا بتأمين بيانات الاعتماد للاتصال بمثيل ServiceNow الخاص بنا. لا يعمل ربط المكون الإضافي للمخزون من المشروع مع المكونات الإضافية المخصصة أو الخارجية فحسب ، بل يمكن أيضًا استخدامه لتعديل عمل بعض قوائم الجرد العادية. يسمح ذلك لـ Ansible Automation Platform بالتكامل بسلاسة وسلاسة مع الأدوات الحالية لأتمتة بيئات تكنولوجيا المعلومات المعقدة بشكل متزايد.
يمكنك العثور على مزيد من المعلومات حول الموضوعات التي تم تناولها في هذا المنشور ، بالإضافة إلى الجوانب الأخرى لاستخدام Ansible ، هنا:
- مدونة للأتمتة باستخدام ServiceNow Ansible .
- .
- Red Hat Automation Hub (cloud.redhat.com).
- Ansible Automation Platform.
*Red Hat . , .