Ansible چیست؟

Ansible چیست؟
Avatar
نویسنده: دریا آزادخواه
شنبه 29 دی 1397
مطالعه: ۱۰ دقیقه ۰ نظر ۱۲۷۵ بازدید

Ansible چیست؟ سیستم‌های مدیریت پیکربندی و تنظیمات به منظور سادگی بیشتر مدیران و تیم‌های عملیاتی برای کنترل سرورهای زیاد طراحی شده‌اند و با کمک این سیستم‌های مدیریتی می توانید سیستم‌های متفاوتی را از یک مکان مرکزی کنترل کنید.

هم اکنون سیستم‌های مدیریت پیکربندی محبوب برای سیستم‌های لینوکس مانند Chef و Puppet وجود دارند ولی اغلب این برنامه‌ها پیچیده‌تر از چیزی هستند که مردم می‌خواهند و به آن نیاز دارند. Ansible بهترین جایگزین برای این کار است، زیرا کمترین سربار را هنگام راه‌اندازی دارد.

در این مطلب از آموزش اوبونتو و آموزش لینوکس روش نصب Ansible را روی سرور Ubuntu 16.04 را مطرح می‌کنیم و روش‌های ابتدایی کار با این برنامه را می‌گوییم.

خرید سرویس لینوکسی با قابلیت نصب Anisble روی سرور اوبونتو

از این مقاله می‌‌توانید برای مدیریت سرویس‌های لینوکسی خود استفاده کنید و اگر قصد خرید سرور لینوکس پارس پک را دارید، می‌توانید با کارشناسان فروش ما در ارتباط باشید. همچنین، می‌توانید جهت کسب‌ اطلاعات بیشتر به لینک‌های زیر مراجعه کنید.

Ansible چگونه کار می کند؟

Ansible از یک کامپیوتر که اجزای Ansible بر روی آن نصب است ماشین های کاربران را تنظیم و پیکربندی می‌کند. همچنین از کانال های SSH عادی برای ارتباط با ماشین ها از راه دور برای دریافت اطلاعات ، دستورالعمل ها و کپی فایل ها استفاده می کند.

این برنامه راه حلی است که مدیریت سرور های شما را بسیار ساده می کند، به این صورت که، هر سروری که پورت SSH آن باز باشد بدون در نظر گرفتن چرخه ای که سرور در آن قرار دارد، می تواند تحت نظر پیکربندی Ansible قرار گیرد.

پیش شرط استفاده از Ansible

هر کامپیوتری که توانایی اتصال از طریق SSH به آن را داشته باشید را می توانید از طریق Ansible مدیریت کنید.

برنامه Ansible به صورت ماژولار کار می کند که این امر باعث می شود که ویژگی های مورد نیازتان برای سناریو های متفاوت را به سیستم اصلی اضافه کنید و از آن استفاده کنید. ماژول ها با هر زبان برنامه نویسی می توانند طراحی شده باشند که باید با استاندارد JSON با یکدیگر ارتباط برقرار کنند.

فایل پیکربندی اصلی با قالب استاندارد YAML نوشته شده است که باعث می شود کاملا واضح و خوانا باشد و شبیه به زبان های نشانه گذاری محبوب باشد. برنامه Ansible از طریق هر ابزار خط فرمان یا اسکریپت های پیکربندی که به آن ها Playbook گفته می شود با کاربران در ارتباط باشد.

آموزش کانفیگ و نصب ansible

در این آموزش به یک سرور Ubuntu 16.04 با دسترسی کاربر non-root با مجوز sudo و ارتباط SSH نیاز دارید.

1. نصب Ansible

کار با انسیبل به معنی مدیریت سرور های مختلف است که برای این کار باید انسیبل را حداقل بر روی یک سرور مجازی نصب کنید. در اینجا برای نصب برنامه از یک سرور Ubuntu 16.04 استفاده می کنیم.
بهترین روش نصب برای انسیبل ، اضافه کردن آن به PPA ( Personal Package System ( که همان منبع مخازن سیستم می باشد ، است. برای اضافه کردن به PPA می توانید از دستور زیر استفاده کنید :

sudo apt-add-repository ppa:ansible/ansible

برای تایید پیام های اضافی PPA دکمه Enter را بزنید.
در ادامه باید برای سیستم مدیریت بسته های از بسته های جدید مطلع شود آن را مجددا راه اندازی کنیم ، سپس برنامه را نصب کنیم :

sudo apt-get update $

 sudo apt-get install ansible $

همانطور که گفتیم در درجه اول انسیبل از طریق SSH با کامپیوتر کاربر ارتباط برقرار می کند. در حالی که قابلیت مدیریت با سیستم احراز هویت بر اساس رمز عبور را دارد ، از کلید SSH نیز می تواند برای راحتی کار استفاده کند. تا اینجا همه برنامه های مورد نیاز را برای مدیریت سرورهای مان از طریق برنامه انسیبل را داریم.

برای آشنایی با اوبونتو مقاله زیر را مطالعه کنید.

اوبونتو چیست؟

2. پیکربندی میزبان های Ansible

برنامه Ansible سرور هایی که در فایل hosts تعریف شده اند را بررسی می کند ، پس برای برقراری ارتباط با کامپیوتر های دیگر باید این فایل را تنظیم کنیم. این فایل را با دسترسی root باز کنید :

 sudo nano /etc/ansible/hosts $

در این فایل تنظیمات نمونه زیادی را مشاهده می کنیم که هیچکدام کارایی لازم را برای ما ندارند ، پس برای شروع پیکربندی با قرار دادن # در ابتدای تمام خطوط ، همه این تنظیمات را به حالت توضیح در می آوریم و در آینده برای سناریو های پیچیده می توانیم از این تنظیمات کمک بگیریم.
فایل hosts نسبتا قابل انعطاف است و راه های مختلفی برای تنظیم این فایل وجود دارد. روش و قالبی که ما از آن برای پیکربندی استفاده می کنیم به صورت زیر است :

[group_name]
alias ansible_ssh_host=your_server_ip

مقدار group_name برای دسته بندی سرور هاست که باید از یک کلمه استفاده کنید، مقدار alias نیز فقط یک نام است که به سرور اشاره می کند.

در سناریو ها فرض بر این است که سه سرور قرار است که بوسیله Ansible کنترل شوند. این سرور های باید با دستور زیر از سرور Ansible در دسترس باشند :

 ssh root@your_server_ip $

اگر تنظیمات را به درستی انجام داده باشید نباید پیغام رمز عبور را مشاهده کنید و این به این معنی است که باید کلید SSH سرور را به درستی تنظیم کرده باشید. آدرس های IP که به سرور ها اختصاص دادیم 192.0.2.1 ، 192.0.2.2 و 192.0.2.3 می باشند و نام های host1 ، host2 و host3 را با نام گروه servers به آنها اختصاص داده ایم.

تنظیمات هاست

برای انجام این کار باید بلاک زیر را به فایل hosts اضافه کنید :

[servers]
host1 ansible_ssh_host=192.0.2.1
host2 ansible_ssh_host=192.0.2.2
host3 ansible_ssh_host=192.0.2.3

 

هاست ها می توانند در گروه های متفاوتی باشند و هر گروه می تواند تنظیمات جداگانه ای برای اعضای خودش داشته باشد. بعدا این مسئله را امتحان کنید.

با تنظیماتی که تا الان انجام شده اگر بخواهیم از طریق انسیبل به سرور های هاست ها متصل شویم با خطا مواجه خواهیم شد ( با فرض اینکه کاربر root نباشید ). به این دلیل که کلید SSH برای کاربر root تعریف شده است و انسیبل به صورت پیش فرض برای اتصال از کاربر فعلی شما استفاده می کند. اگر اقدام به اتصال کنید خطای زیر را مشاهده خواهید کرد :

Ansible connection error
host1 | UNREACHABLE! => {
changed: false,
msg: Failed to connect to the host via ssh.,
unreachable: true

}

 

سرور انسبیل

در سرور Ansible از کاربری به نام demo استفاده می کنیم و Ansible تلاش می کند که با این دستور به همه سرور ها متصل شود ssh demo@server ، و اگر این کاربر بر روی سیستم راه دور تعریف نشده باشد ، این دستور کار نمی کند. برای رفع مشکل یک فایل ایجاد می کنیم تا همه سرور های عضو گروه server با کاربر root متصل شوند.

برای این کار یک دایرکتوری در ساختار پیکربندی انسیبل با نام group_vars ایجاد می کنیم. در این پوشه برای هر گروهی که می خواهیم تنظیم کنیم یک فایل با فرمت استاندارد YAML ایجاد می کنیم :

 sudo mkdir /etc/ansible/group_vars $
sudo nano /etc/ansible/group_vars/servers $

تنظیمات را در این فایل قرار می دهیم. فایل های YAML با — شروع می شوند ، پس فراموش نکنید که در ابتدای فایل آن را اضافه کنید :

/etc/ansible/group_vars/servers
ansible_ssh_user: root

در انتها فایل را ذخیره کرده و خارج شوید. اگر میخواهید تنظیمات خاصی را برای همه سرور های بدون در نظر گرفتن گروه آنها انجام دهید ، این تنظیمات را در فایل etc/ansible/group_vars/all/ قرار دهید. برای اعمال تنظیمات خاص برای هاست های نیز می توانید در مسیر etc/ansible/host_vars/ فایل های پیکربندی را ایجاد کنید.

 

3.دستورات ساده Ansible

 

تا اینجا سرور های هاست ها را تنظیم کردیم و پیکربندی کافی برای اتصال به سرور های هاست ها را انجام دادیم و اکنون می توانیم دستورات اولیه را اجرا کنیم.

 

از سرور هایی که تنظیم کردیم با دستور زیر ping می گیریم :

$ ansible -m ping all

Ping output
host1 | SUCCESS => {
changed: false,
ping: pong
}

 

Ping output
host1 | SUCCESS => {
changed: false,
ping: pong
}

 

host2 | SUCCESS => {
changed: false,
ping: pong
}

 

این یک تست ساده برای بررسی اتصال انسیبل با سرور های هاست های تعریف شده بود. در اینجا کلمه all برای همه هاست استفاده می شود ، اگر می خواهید که از گروه خاصی تست ping بگیرید از دستور زیر استفاده کنید :

$ ansible -m ping servers

همچنین می توانید یک هاست خاص را تعیین کنید :

$ ansible -m ping host1

همچنین چند هاست خاص که آنها را با کولون : از یکدیگر جدا می کنیم :

$ ansible -m ping host1:host2

ماژول پینگ

مقدار m ping- در دستور گفته شده برای استفاده از ماژول ping در ساختار Ansible است. این ها دستورات پایه ای هستند که می توانید بر روی سرور ها هاست ها از راه دور اجرا کنید. ماژول ping در بیشتر موارد مانند ابزار ping لینوکس عمل می کند ولی در Ansible ارتباطات را بررسی می کند.

ماژول ping هیچ آرگومانی را نمی گیرد ولی می توانیم دستور دیگری را امتحان کنیم تا از صحت عملکرد آن مطمئن شویم. می توانیم آرگومان a- را ارسال کنیم. ماژول shell این امکان را برای ما فراهم می کند که دستورات خط فرمان را از راه دور بر روی سرور های هاست ها اجرا کنید و نتیجه را دریافت کنیم. برای مثال از دستور زیر برای پیدا کردن مقدار فضای استفاده شده حافظه رم از سرور host1 استفاده می کنیم :

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

Shell output
host1 | SUCCESS | rc=0 >>
total used free shared buffers cached
Mem: 3954 227 3726 0 14 93
-/+ buffers/cache: 119 3834
Swap: 0 0 0

جمع بندی

ansible چیست؟ تا اینجا باید توانسته باشید که سرور Ansible را پیکربندی کرده باشید و سرور هایی را که می خواهید تنظیم کنید با موفقیت به Ansible متصل کرده باشید.

تا اینجا سرور Ansible را برای اتصال به سرور هایی که می خواهیم آنها را مدیریت کنیم پیکربندی کرده و به سرور های هاست ها متصل کردیم. در ادامه بررسی صحت اتصال به سرور های هاست ها را بررسی کردیم و دستورات ساده ansible را از راه دور اجرا کردیم.

سعی کردیم مطالب مفید و کاربردی را در این مطلب بیان کنیم ولی مطالب عنوان شده بسیار ساده و ابتدایی هستند و به ویژگی های پرقدرت Ansible پرداخته نشده است ، مانند Playbook ها. بدین منظور میتوانید آموزش نصب playbook در ansible را مشاهده کنید.

سوالات متداول

1. Ansible چیست ؟

سیستم کنترل پیکربندی و تنظیمات برای راحتی بیشتر مدیران و تیم های عملیاتی برای مدیریت سرورهای زیاد طراحی شده است.

2. برای استفده از Ansible چه پیش شرط هایی لازم است؟

هر کامپیوتری که قابلیت وصل شدن از طریق SSH به آن را داشته باشید را می توانید با Ansible کنترل کنید.

3. نمونه های دیگر سیستم های مدیریت پیکربندی محبوب برای سیستم های لینوکس چیست؟

Chef و Puppet