آموزش نصب و راه اندازی Ansible در CentOS 7 – قسمت دوم

ایجاد شده توسط | اسفند ۱۸, ۱۳۹۵

مقدمه

Configuration Management System یا همان سیستم مدیریت تنظیمات برای این طراحی شدند تا مدیریت تعداد بالای سرور ها را برای مدیر سیستم یا تیم های عملیاتی آسان سازند. این سیستم ها به شما اجازه میدهد تا سیستم های مختلف را توسط یک سیستم مرکزی کنترل نمایید.
ابزار های مختلف سیستم مدیریت تنظیمات برای توضیع های لینوکسی ارائه شده است که میتوان به Chef, Puppet و … اشاره کرد. این ابزار ها ممکن است به دلیل پیچیدگی برای خیلی از متخصصان مورد استفاده واقع نشوند. Ansible به دلیل عدم نیاز به ترافیک کاری بالا در شروع کار میتواند جایگزین مناسبی باشد. Ansible در پست های قبلی بصورت مختصر معرفی شد، پس در صورتی که با این ابزار اشنایی ندارید بهتر است [معرفی و آموزش Ansible] را مطالعه نمایید.

Client های Ansible در سرور کانفیگ شده و با استفاده از Component های نصب شده میتوان Client ها را مدیریت نمود (توجه داشته باشید در اینجا منظور از Client نودها یا سرور های تحت مدیریت Ansible هستند). این ابزار با استفاده از پروتکل SSH به Client متصل شده و دریافت اطلاعات، اجرای دستور، کپی فایل و یا عملیات مورد نظر را در ان اجرا میکند، به همین دلیل Ansible نیاز به نصب و یا کانفیگ Agent در سرور مقصد نخواهد داشت. به همین دلیل Administration سرور ها ساده سازی شده است.
هر سیستمی که از پورت SSH استفاده میکند میتواند تحت مدیریت تنظیمات Ansible قرار بگیرد. Ansible یکی از شناخته شده ترین ابزار ها برای DevOps میباشد که تعداد کاربران ان روز به روز در حال افزایش است. در پست های اینده با مفاهیم DevOps اشنا خواهیم شد.

Ansible از روش Modular یا ماژول گرا استفاده میکند، همین موضوع باعث میشود تا سیستم اصلی بتواند به اسانی سناریو های مورد نیاز را بر روی تمامی Node ها یا همان Client ها اجرا کند. برای کدنویسی ماژول ها میتوانید از هر زبان اسکریپتی استفاده کنید، البته پیشنهاد ما به دلایلی استفاده از زبان Python است. فایل های تنظیمات اصلی با استفاده از YAML نوشته شده است. Ansible میتواند با استفاده از Command-line و یا اسکریپت تنظیمات که Playbook نامیده می شود با Client تعامل داشته باشد.

نصب Ansible در لینوکس، توضیع CentOS نسخه 7

برای نصب این ابزار ابتدا سیستم عامل CentOS 7 را روی سرور نصب کرده و یک یوز غیر روت یا Non-root user برای خود ایجاد نمایید. سپس از طریق پروتکل SSH وارد محیط Command-Line لینوکس خود شده و مراحل زیر را به ترتیب اجرا نمایید.

مرحله اول – نصب Ansible

 برای نصب این ابزار ابتدا باید مخزن نرم افزاری EPEL را در لینوکس فعال نمایید. برای نصب این ابزار کافیست دستور زیز را در Command-Line وارد نمایید.

sudo yum install epel-release

پس از وارد کردن این دستور مخزن نرم افزاری EPEL نصب خواهد شد. زمانی که EPEL نصب شد به راحتی میتوانی با استفاده از Package manager ابزار Ansible را نصب نمایید.

sudo yum install ansible

نصب Ansible آسان بوده و پس از نصب شدن تمامی نیاز های نرم افزاری ما برای مدیریت سرور ها را برطرف خواهد ساخت. در ادامه کمی با نحوه تنظیمات اشنا خواهیم شد.

مرحله دوم – تنظیم هاست ها در Ansible

Ansible با استفاده از فایل “hosts” سرور ها را شناسایی و track میکند. پس قبل از برقراری ارتباط با سرور ها باید این فایل ایجاد شود. این فایل را با استفاده از دسترسی root با استفاده از دستور زیر باز کنید.

sudo vi /etc/ansible/hosts

 پس از باز شدن فایل مثال های زیادی از تنظیمات این فایل را مشاهده میکند که کامت شده و غیر فعال میباشد. بهتر است برای یادگیری Ansible و ایجاد سناری های پیچیده در اینده این مثال را حذف نکنید.
فایل “hosts” بسیار انعطافپذیر بوده میتواند به روش های مختلف تنظیم شود. syntax هایی قرار است توسط ما استفاده شود اینگونه است:

متغیر group_name نام گروه برای سازماندهی تمامی سرور های زیر مجموعه خود میباشد. به این صورت که با یک کلمه میتوانید بر روی صدها سرور تغییر ایجاد نمایید. alias نیز نامی است که مربوط به سرور ماست و میتواند بصورت ذلخواه و البته با یک استراتژی مناسب توسط شما، برای هر سرور انتخاب شود.
تصور کنید که میخواهید 3 سرور را توسط Ansible کنترل کنید. همانطور که پیش از این نیز گفته شد Ansible با استفاده از پروتکل SSH با Client ها ارتباط برقرار میکند، به همین دلیل تمامی سرور های مورد نظر باید برای سرور Ansible قابل دسترس باشند. یغنی بتوانید با دستور زیر در در سرور Ansible به SSH هر Client متصل شوید.

ssh root@your_server_ip

 پس از وارد کردن دستور بالا نباید پسوورد از شما درخواست شود، درواقع هر سرور باید توسط متد Password-based Authentication به سرور های Client متصل شوند که البته SSH Keys به اسانی این کار کمک میکند.
در نظر بگیرید ادرس IP سرور های ما 192.168.1.1, 192.168.1.2 و 192.168.1.3 است. با توجه به این ادرس ها فایل hosts را کانفیگ کرده و نام Client ها را نیز به ترتیب host2, host1 و host3 قرار میدهیم. نام گروه این client ها را نیز servers قرار میدهیم. فایل hosts را با دستور زیر باز نمایید.

sudo vi /etc/ansible/hosts

سپس مقادیر زیر را نیز در ان اضافه نمایید. این مقادیر میتواند با توجه به ادرس IP سرور ها و نام دلخواه شما تغییر کند.

[servers]
host1 ansible_ssh_host=192.168.1.1
host2 ansible_ssh_host=192.168.1.2
host3 ansible_ssh_host=192.168.1.3

در hosts میتوانید گروه های مختلفی تعریف کنید که هر گروه میتواند پارامتر های خاصی برای اعضای خود داشته باشد. ما نیز میخواهیم در مرحله بعد این کار را انجام دهیم.
بصورت پیشفرض Ansible از نام کاربری شما برای ورود به Client استفاده میکند، به این صورت که اگر شما با نام کاربری jimmy وارد سرور Ansible شده باشید از همین نام برای لاگین به Client ها استفاده میشود. اگر نام کاربری فوق در Client وجود نداشته باشد با این ارور مواجه میشود:

پس برای اینکه از این مشکل جلوگیری کنیم برای Ansible مشخص میکنیم بطور مثال از نام jimmy برای ورود استفاده نماید. برای اینکار در ساختار تنظیمات Ansible یک دایرکتوری با نام groupd_vars ایجاد میکنیم.

sudo mkdir /etc/ansible/group_vars

در داخل این دایرکتوری یک فایل با فرمت YAML ایجاد نمایید.

sudo nano /etc/ansible/group_vars/servers

سپس متن زیر را به ان اضافه نمایید.


ansible_ssh_user: jimmy

توجه داشته باشید فایل های YAML با “—” شروع میشود. پس این قسمت را فراموش نکنید. پس از ایجاد تغییرات در فایل، آن را ذخیره کرده سپس از آن خارج شوید. پس از پایان تنظیمات Ansible از نام کاربری jimmy برای ورود به سرور ها استفاده میکند. در ادرس etc/ansible/host_vars/ میتواند برای هر سرور نام کاربری ایجاد نمایید.

مرحله سوم – استفاده از دستورات ساده Ansible

پس از تنظیم Client ها و تنظیم ان برای اتصال به تمامی آنها، برای شروع میتوانیم یک دستور ساده را روی انها اعمال نماییم.

برای پینگ گرفتن از تمامی سرور ها میتوانید از دستور زیر استفاده نمایید.

ansible -m ping all

پس از وارد کردن دستور بالا در محیط Command-Line باید خروجی بصورت زیر مشاهده شود:

این دستور یک تست ابتدایی برای برسی اتصال Ansible به Client ها میباشد. با استفاده از این دستور میتوانید صحت اتصال به سرور های تحت مدیرت را برسی نمایید.  دستور ping -m به Ansible اعلام میکند که باید از ماژول ping استفاده کند. این جزو دستورات ابتدایی است که میتوانید بر روی Host ها اجرا کنید. ماژول ping از خیلی جهات شبیه به دستور ping لینوکس است با این تفاوت که دستور ping مربوط به Ansible اتصال یا همان Connectivity هاست ها را برسی میکند.

در دستور ping که قبلا ذکر شد all به معنی همه هاست ها یا همان سرور هاست. ما میتوانیم بجای اجرای این دستور روی همه هاست ها ان را فقط روی گروهی خاص اجرا کنیم.

ansible -m ping servers

دستور بالا ping را فقط روی گروه servers اجرا میکند. در دستور ping این قابلیت فراهم شده تا دستور را فقط بر روی یک یا چند هاست دلخواه نیز اجرا نمایید.

ansible -m ping host1

ansible -m ping host1:host2

در دو دستور با نحوه اجرای ping بر روی یک یا چند هاست مشخص شده است. یکی از ماژول های مورد استفاده Shell میباشد. با استفاده از این ماژول میتوانید دستورات Command-Line را در سرور یا سرور ها اجرا کرده و result دریافت کنید. برای مثال جهت مشاهده میزان مصرف memory در host1 میتوانید دستور زیر را اجرا نمایید.

ansible -m shell -a ‘free -m’ host1

همانطور که مشاهده میکنید با استفاده از سوییچ a- میتوانید به shell ارگومان ارسال نمایید. خروجی دستور میتواند بصورت زیر باشد:

جمع بندی

پس از انجام موارد بالا توانستیم در Ansible به تعداد دلخواه host تعریف کرده و اتصال ان را برسی نماییم. سپس با استفاده از ماژول Shell دستورات مورد نظر را روی سرور و یا سرورهای مورد نظر اجرا کنیم. در این مقاله موارد ابتدایی اموزش داده شد اما درمورد امکان قدرتمند PlayBook بحث نشد. پس از اموزش ساده و اشنایی با Ansible زمان ان فرا رسیده تا نحوه نوشتن و استفاده از Playbook را بیاموزید. با استفاده از این ابزار میتوان Task های پیچیده و سنگین را در سرور های تحت مدیریت Ansible اجرا، نظارت و مدیریت نموید. در مقالات اینده نحوه کار با Playbook نیز قرار داده خواهد شد.

منبع “ویکی کانفیگ”

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *