استفاده از افزونه های موجودی از مجموعه های محتوای Ansible در Ansible Tower

محیط های فناوری اطلاعات روز به روز پیچیده تر می شوند. در این شرایط، داشتن اطلاعات به روز در مورد گره هایی که در شبکه وجود دارند و در معرض پردازش هستند، برای سیستم اتوماسیون فناوری اطلاعات حیاتی است. در پلتفرم Red Hat Ansible Automation این مشکل از طریق به اصطلاح موجودی (فهرست) - لیست گره های مدیریت شده.

استفاده از افزونه های موجودی از مجموعه های محتوای Ansible در Ansible Tower

در ساده ترین شکل، موجودی یک فایل ثابت است. زمانی که کار با Ansible را شروع می کنید، ایده آل است، اما با افزایش اتوماسیون، کافی نیست.

و در اینجا دلیل است:

  1. چگونه می‌توانید فهرست کاملی از گره‌های نظارت‌شده را به‌روزرسانی و نگهداری کنید، وقتی همه چیز دائماً در حال تغییر است، وقتی بارهای کاری - و متعاقباً گره‌هایی که روی آنها اجرا می‌شوند - می‌آیند و می‌روند؟
  2. چگونه می توان اجزای زیرساخت فناوری اطلاعات را به منظور انتخاب گره ها برای اعمال یک اتوماسیون خاص طبقه بندی کرد؟

موجودی پویا به هر دوی این سوالات پاسخ می دهد (موجودی پویا) – یک اسکریپت یا پلاگینی که به دنبال گره های خودکار می گردد و به منبع حقیقت اشاره می کند. علاوه بر این، موجودی پویا به طور خودکار گره ها را در گروه ها طبقه بندی می کند تا بتوانید سیستم های هدف را برای انجام اتوماسیون خاص Ansible با دقت بیشتری انتخاب کنید.

افزونه های موجودی به کاربر Ansible این امکان را می دهد که به پلتفرم های خارجی برای جستجوی پویا برای گره های هدف دسترسی داشته باشد و از این پلت فرم ها به عنوان منبع حقیقت هنگام ایجاد موجودی استفاده کند. فهرست استاندارد منابع در Ansible شامل پلتفرم‌های ابری AWS EC2، Google GCP و Microsoft Azure می‌شود، و همچنین افزونه‌های موجودی زیادی برای Ansible وجود دارد.

برج Ansible همراه با تعدادی از افزونه های موجودی، که به درستی کار می کنند و علاوه بر پلتفرم های ابری ذکر شده در بالا، با VMware vCenter، Red Hat OpenStack Platform و Red Hat Satellite یکپارچه می شوند. برای این پلاگین ها، فقط باید اعتبارنامه هایی را برای اتصال به پلتفرم هدف ارائه دهید، پس از آن می توان از آنها به عنوان منبع داده های موجودی در Ansible Tower استفاده کرد.

علاوه بر پلاگین‌های استاندارد موجود در Ansible Tower، افزونه‌های موجودی دیگری نیز وجود دارند که توسط انجمن Ansible پشتیبانی می‌شوند. با انتقال به مجموعه محتوای Red Hat Ansible این افزونه ها شروع به گنجاندن در مجموعه های مربوطه کردند.

در این پست، نمونه‌ای از کار با افزونه موجودی برای ServiceNow، یک پلتفرم مدیریت خدمات IT محبوب که در آن مشتریان اغلب اطلاعات مربوط به تمام دستگاه‌های خود را در CMDB ذخیره می‌کنند، می‌آوریم. علاوه بر این، CMDB می‌تواند حاوی زمینه‌ای باشد که برای اتوماسیون مفید است، مانند اطلاعاتی در مورد صاحبان سرور، سطوح خدمات (تولید/غیر تولید)، به‌روزرسانی‌های نصب‌شده، و پنجره‌های نگهداری. افزونه موجودی Ansible می تواند با ServiceNow CMDB کار کند و بخشی از مجموعه است سرویس دهی در پورتال galaxy.ansible.com.

مخزن Git

برای استفاده از افزونه موجودی از مجموعه ای در Ansible Tower، باید به عنوان منبع پروژه تنظیم شود. در Ansible Tower، یک پروژه یکپارچه سازی با نوعی سیستم کنترل نسخه، مانند یک مخزن git است که می تواند برای همگام سازی نه تنها کتاب های بازی اتوماسیون، بلکه متغیرها و لیست های موجودی نیز استفاده شود.

مخزن ما در واقع بسیار ساده است:

├── collections
│   └── requirements.yml
└── servicenow.yml

فایل servicenow.yml حاوی جزئیات موجودی افزونه است. در مورد ما، ما به سادگی جدولی را در ServiceNow CMDB که می‌خواهیم استفاده کنیم، مشخص می‌کنیم. ما همچنین فیلدهایی را که به عنوان متغیرهای گره اضافه می شوند، به علاوه اطلاعات خاصی در مورد گروه هایی که می خواهیم ایجاد کنیم، تنظیم می کنیم.

$ 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 را که به هیچ وجه به آن متصل خواهیم شد مشخص نمی کند و هیچ اعتباری برای اتصال مشخص نمی کند. همه اینها را بعداً در Ansible Tower پیکربندی خواهیم کرد.

فایل collections/requirements.yml مورد نیاز است تا Ansible Tower بتواند مجموعه مورد نیاز را دانلود کرده و از این طریق افزونه موجودی مورد نیاز را دریافت کند. در غیر این صورت، باید این مجموعه را به صورت دستی بر روی تمام گره های Ansible Tower خود نصب و نگهداری کنیم.

$ cat collections/requirements.yml
---
collections:

- name: servicenow.servicenow

هنگامی که این پیکربندی را به کنترل نسخه فشار دادیم، می‌توانیم پروژه‌ای در Ansible Tower ایجاد کنیم که به مخزن مربوطه ارجاع دهد. مثال زیر Ansible Tower را به مخزن github ما پیوند می دهد. به URL SCM توجه کنید: به شما امکان می دهد یک حساب کاربری برای اتصال به یک مخزن خصوصی ثبت کنید و همچنین یک شعبه خاص، برچسب یا تعهد برای بررسی را مشخص کنید.

استفاده از افزونه های موجودی از مجموعه های محتوای Ansible در Ansible Tower

ایجاد اعتبار برای ServiceNow

همانطور که گفته شد، پیکربندی موجود در مخزن ما حاوی اعتبار برای اتصال به ServiceNow نیست و نمونه ServiceNow که با آن ارتباط برقرار خواهیم کرد را مشخص نمی کند. بنابراین برای تنظیم این داده ها، اعتبارنامه هایی را در Ansible Tower ایجاد می کنیم. مطابق با اسناد افزونه موجودی 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 به ما اجازه تعریف می دهد انواع اعتبارنامه های سفارشی، می توانید در این مقاله بیشتر در این مورد مطالعه کنید «برج Ansible 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 اضافه کنیم و نمونه، نام کاربری و رمز عبور را مانند این تنظیم کنیم:

استفاده از افزونه های موجودی از مجموعه های محتوای Ansible در Ansible Tower

ما موجودی ایجاد می کنیم

بنابراین، اکنون همه ما آماده ایم تا یک موجودی در Ansible Tower ایجاد کنیم. بیایید آن را ServiceNow بنامیم:

استفاده از افزونه های موجودی از مجموعه های محتوای Ansible در Ansible Tower

پس از ایجاد موجودی، می توانیم یک منبع داده را به آن ضمیمه کنیم. در اینجا پروژه ای را که قبلا ایجاد کرده بودیم مشخص می کنیم و مسیر فایل موجودی YAML خود را در مخزن کنترل منبع وارد می کنیم، در مورد ما این پروژه servicenow.yml در ریشه پروژه است. علاوه بر این، باید حساب ServiceNow خود را پیوند دهید.

استفاده از افزونه های موجودی از مجموعه های محتوای Ansible در Ansible Tower

برای بررسی نحوه عملکرد همه چیز، بیایید سعی کنیم با کلیک کردن روی دکمه "همگام سازی همه" با منبع داده همگام سازی کنیم. اگر همه چیز به درستی پیکربندی شده باشد، گره ها باید به موجودی ما وارد شوند:

استفاده از افزونه های موجودی از مجموعه های محتوای Ansible در Ansible Tower

لطفا توجه داشته باشید که گروه های مورد نیاز ما نیز ایجاد شده اند.

نتیجه

در این پست، نحوه استفاده از افزونه های موجودی مجموعه ها در Ansible Tower را با استفاده از افزونه ServiceNow به عنوان مثال بررسی کردیم. ما همچنین اعتبارنامه هایی را برای اتصال به نمونه ServiceNow خود به صورت ایمن ثبت کردیم. پیوند یک افزونه موجودی از یک پروژه نه تنها با افزونه های شخص ثالث یا سفارشی کار می کند، بلکه می تواند برای اصلاح عملکرد برخی از موجودی های استاندارد نیز استفاده شود. این باعث می‌شود تا هنگام خودکارسازی محیط‌های پیچیده فناوری اطلاعات، پلتفرم Ansible Automation به راحتی و بدون درز با ابزارهای موجود ادغام شود.

می توانید اطلاعات بیشتری در مورد موضوعات مورد بحث در این پست و همچنین سایر جنبه های استفاده از Ansible در اینجا بیابید:

*Red Hat هیچ تضمینی برای صحت کد موجود در اینجا نمی دهد. همه مواد به صورت غیر تاییدیه ارائه می شوند، مگر اینکه به صراحت بیان شده باشد.

منبع: www.habr.com

اضافه کردن نظر