انسیبل (Ansible) چیست و چه کاربردی دارد؟
در دنیای امروز، اتوماسیون ضروری است. محیطهای فناوری اطلاعات بسیار پیچیده هستند و اغلب نیاز به مقیاسبندی خیلی سریع دارند؛ اگر مدیران سیستم و توسعهدهندگان همه کارها را دستی انجام دهند ادامه راه سخت خواهد بود. خودکارسازی وظایف پیچیده انجام آنها را آسانتر و مسئولیتهای توسعهدهندگان را قابل مدیریتتر میکند. بنابراین، اتوماسیون منجر به آزادسازی آنها برای تمرکز بر سایر فعالیتها میشود که در نهایت به نفع سازمان است.
Ansible چیست؟
Ansible یک ابزار خط فرمان، متنباز و مبتنی بر پایتون برای اتوماسیون فناوری اطلاعات است که توسط Redhat توسعه یافته است. انسیبل بسیاری از فرآیندهای دستی IT، از جمله تهیه، مدیریت پیکربندی، استقرار برنامهها و هماهنگسازی را خودکار میکند.
Ansible به شما اجازه میدهد تا محیط برنامه را بدون توجه به جایی که نصب شده است هماهنگ کرده و آن را بر اساس نیاز خود سفارشی نمائید. Ansible نیازی به نصب نرم افزار اضافی یا پورت فایروال روی سیستمهای کلاینت برای خودکار شدن و یا ایجاد یک سازمان مدیریت جداگانه ندارد.
توسعهدهندگان، مدیران سیستم و معماران فناوری اطلاعات میتوانند از اتوماسیون Ansible برای پیکربندی سیستمها، بهروزرسانی سیستمها، گسترش نرمافزار، خودکارسازی وظایف روزانه، تامین زیرساخت، ارتقای امنیت و انطباق، وصله سیستمها و اشتراکگذاری اتوماسیون در سراسر سازمان استفاده کنند.
Ansible چه کاری انجام میدهد؟
ماژول های Ansible به گونه ای ساخته میشوند که وضعیت مطلوب یک سیستم را نشان دهند، به این معنی که هر ماژول می تواند شرایط واقعی هر node مدیریت شده را تعریف کند.
به عنوان مثال، اگر یک مدیر سیستم تصمیم بگیرد که تمام workstationها باید اوبونتو 22.04 را اجرا کنند و Ansible را در شرکت فعال کند، ماژولهای packaging متوجه میشوند که کدام node هنوز از اوبونتوی مثلا 20.10 استفاده میکند و آن را به اوبونتو 22.04 ارتقا میدهند. ماژولهای packaging شروع به بررسی وضعیت workstationها میکنند.
به طور مشابه، هر ایستگاه کاری در یک سازمان میتواند هر شب با استفاده از نرم افزار ارتقا می یابد.
Ansible چگونه کار میکند؟
Ansible با اتصال به برنامهها کار میکند، شما میخواهید اسکریپتهایی را خودکار و push کنید تا دستورالعملهایی را انجام دهند که به طور مستقیم هندل میشد. این برنامه ها از کامپوننتهای Ansible استفاده میکنند که بر اساس اتصال نقطه پایانی ، رابط کاربری و دستورات ایجاد شدهاند.
Ansible به طور پیشفرض ماژولها را بر روی استاندارد Secure Socket Shell (SSH) اجرا میکند و اگر قابل اجرا باشد، پس از اتمام، آنها را حذف مینماید. نیازی به سرورهای اضافه، daemon یا پایگاه داده نیست و کاربران می توانند از طریق ترمینال، ویرایشگر متن و سیستم کنترل نسخه برای پیگیری تغییرات استفاده کنند.
نمودار زیر عملکرد Ansible را نشان میدهد:
در نمودار بالا، management node یا گره کنترل کننده (node مدیریت) است که کل اجرای playbook و گرهای را که installation از آن اجرا میشود، کنترل مینماید. فایل inventory شامل لیستی از hostها است که ماژولهای Ansible باید روی آنها اجرا شود. management node قبل از اجرای ماژولها بر روی ماشینهای میزبان و نصب محصول، یک اتصال SSH برقرار می کند. پس از نصب، ماژولها را حذف میکند.
معماری Ansible چگونه است؟
در ادامه کمی در مورد بخشهایی که محیط Ansible را تشکیل می دهند صحبت میکنیم:
-
ماژولها - Modules
ماژول ها مانند برنامههای کوچکی هستند که Ansible آنها را از یک ماشین کنترلی به تمام گرهها یا ریموت سرورها منتقل(push) میکند. ماژولها با استفاده از Playbooks اجرا میشوند و چیزهایی مانند serviceها ، packageها و file ها را کنترل میکنند. Ansible همه ماژولها را برای نصب بهروزرسانیها یا هر کاری که لازم است اجرا میکند و پس از اتمام آن را حذف مینماید. Ansible بیش از 450 ماژول برای کارهای روزمره ارائه میدهد.
-
پلاگینها - Plugins
همانطور که احتمالا از بسیاری از ابزارها و پلتفرمهای دیگر میدانید، پلگینها تکههای کد اضافی هستند که عملکرد را افزایش میدهند. Ansible با تعدادی از پلاگینهای خود ارائه میشود، اما شما می توانید افزونه های خودتان را هم بنویسید. پلاگین های Action، Cache و Cache Back سه نمونه هستند.
-
موجودیها - Inventories
تمام ماشینهایی که با Ansible استفاده میکنید (ماشین کنترل به علاوه گرهها) در یک فایل ساده به همراه آدرسهای IP، پایگاههای داده، سرورها و غیره فهرست شدهاند. پس از ثبت موجودی، می توانید با استفاده از یک فایل متنی ساده، متغیرهایی را به هر یک از هاستها اختصاص دهید. شما همچنین می توانید موجودی را از منابعی مانند EC2 (Amazon Elastic Compute Cloud) هم تهیه کنید.
-
پلیبوک - Playbooks
پلیبوک Ansible مانند کتابچه راهنمای کارها هستند. آنها فایلهای سادهای هستند که با YAML نوشته شدهاند، YAML مخفف YAML Ain’t Markup Language، یک زبان سریال سازی دادهها قابل خواندن توسط انسان است. Playbookها دلیل اصلی هستند که Ansible را بسیار محبوب کرده ، زیرا آنها وظایفی را که باید به سرعت و بدون نیاز به دانستن یا به خاطر سپردن suntax خاصی توسط کاربر انجام شود، توصیف میکنند. آنها نه تنها میتوانند پیکربندیها را اعلام(declare) کنند، بلکه می توانند مراحل هر کار سفارشی دستی را هماهنگ کنند و می توانند وظایف را همزمان یا در زمان های مختلف اجرا کنند.
YAML توسط ابزار اتوماسیون Ansible برای ایجاد فرآیندهای اتوماسیون استفاده میشود؛ در این مطلب به معرفی کامل بخشهای مختلف یک فایل YAML خواهیم پرداخت.
هر Playbook از یک یا چند play تشکیل شده است و هدف یک play ترسیم (map) گروهی از هاستها به نقش های کاملا تعریف شده است که توسط وظایف نمایش داده می شود.
مجموعهای از وظایف پیچیده IT که میتوانند به صورت خودکار و بدون دخالت انسانی انجام شوند، Ansible Playbook نامیده میشوند. هاستهایی که Ansible inventory را تشکیل میدهند در معرض Ansible Playbook قرار میگیرند که روی آنها اجرا میشود.
Playbook ها فایل های کد Ansible هستند که با فرمت YAML نوشته شده اند. Ansible Playbooks مدیریت پیکربندی ساده، قابل استفاده مجدد، قابل تکرار و راهکار استقرار multi-machine ایده آل برای استقرار برنامه های کاربردی پیچیده است. می توان از playbook برای ارسال تنظیمات جدید یا تایید پیکربندی سیستم های ریموت هم استفاده کرد.
نمونه ای از Ansible Playbook :
وقتی این playbook را اجرا میکنید، PHP و Nginx را روی سرورهای Host1 و Host2 نصب میکند.
- name: Play to Packages
hosts:
- Host1
- Host2
tasks:
- name: Install php and nginx
package:
name:
- php
- nginx
state: present
-
API ها
(application programming interfaces) APIهای مختلفی در دسترس هستند، بنابراین می توانید انواع اتصال Ansible (به معنای چیزی بیش از SSH برای transport)، callbackها و موارد دیگر را گسترش دهید.
خرید سرور مجازی لینوکس در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
Ansible برای چه مواردی استفاده می شود؟
-
استفاده از Ansible برای DevOps
DevOps با Ansible با ادغام خودکار برنامههای ایجاد شده در لوکال در برنامه های production سادهتر شده است. Ansible پرکاربردترین ابزار DevOps برای تنظیم، اتوماسیون، پیکربندی و مدیریت زیرساختهای آیتی است. مزایای Ansible در DevOps شامل توانایی سازگاری و مقیاس در واکنش به تقاضا است.
-
استفاده از Ansible برای مدیریت کانتینرهای Docker
Docker یک پلتفرم با کارایی بالا برای ایجاد و اجرای سریع کانتینرها در سرورها و دستگاه های لوکال است. کانتینرهای Docker با ماشینهای مجازی سبک وزن قابل مقایسه هستند. به دلیل طراحی ساده، Ansible مجموعه ای قوی از قابلیتها و ماژولهای داخلی ارائه میدهد که ساختن اسکریپتهای اتوماسیون را ساده میکند. این شما را قادر میسازد تا وظایف (task) را بسازید و آنها را در محیط مورد نظر خود اجرا کنید.
-
استفاده ازAnsible برای اتوماسیون
اولین قدم برای خودکارسازی چرخه عمر سرویس عملیاتی برنامه شما، خودکار کردن هر گونه استقرار سخت افزاری است. زیرساختهای IT در سرور بر متال (bare metal servers)، سیستمهای مجازیسازی و سرورهای ابری ممکن است با Ansible خودکار شوند. علاوه بر این، میتواند پیکربندی سیستمهای متعدد، دستگاهها، پایگاههای داده، دستگاههای ذخیره سازی، شبکهها و فایروالها را خودکار کند.
-
استفاده از Ansible برای مدیریت پیکربندی
Ansible یک راه حل مدیریت پیکربندی است که آسان، قابل اعتماد و سازگار است. اگر تجربه قبلی در زمینه فناوری اطلاعات دارید، میتوانید آن را به سرعت راه اندازی کنید. تنظیمات Ansible اطلاعات زیرساختی اساسی را توضیح می دهند که کامپیوترها میتوانند بخوانند و بفهمند. برای شروع مانیتورینگ ماشینها، فقط به رمز عبور یا کلید SSH نیاز دارید.
-
نصب Ansible Web Application
استقرار برنامه با چندین لایه به دلیل Ansible سریع و آسان است. برای مدیریت فرایندها، فقط باید مراحل را در یک playbook تعریف کرد تا Ansible چگونگی رسیدن فرایندها به نتیجه دلخواه را بفهمد. به عبارت دیگر، نیازی به پیکربندی دستی برنامهها در هر سیستم وجود ندارد. Ansible از طریق SSH با شبکه های ریموت ارتباط برقرار میکند و زمانی که یک ماژول از یک دستگاه کنترل فعال میشود، تمام دستورالعملها را اجرا میکند.
-
استفاده از Ansible برای Cloud Provisioning
پیکربندی سخت افزار اولین گام در خودکار کردن چرخه عمر برنامههای شما است. Ansible میتواند سرورهای بر متال (bare metal servers)، میزبانهای مجازی، پلتفرمهای ابری، زیرساخت شبکه و موارد دیگر را نصب کند. کاربران می توانند چندین سرور مورد نیاز در شبکه کامپیوتری را در حین تهیه راه اندازی کنند.
-
استفاده از Ansible برای امنیت و انطباق
دستورالعملهای امنیتی برای کل سایت را میتوان با سایر رویههای خودکار مانند ruleهای نرم افزاری فایروال استفاده کرد. هنگامی که اطلاعات امنیتی بر روی دستگاه کنترل پیکربندی شود، بلافاصله در سرورهای مختلف متصل بهروزرسانی شده و با playbook ترکیب و استفاده میشوند.
کاربردهای Ansible
توسعه دهندگان
Ansible در میان توسعه دهندگان محبوب است زیرا به آنها اجازه میدهد تا به سرعت ماشینها را با استفاده از playbook که عبارتهای اعلامی (declarative) با خوانایی آسان هستند و میتوانند در source control ذخیره شوند، تنظیم و مدیریت نمایند.
Ansible به توسعه دهندگان اجازه میدهد تا برنامههای چند لایه را به سرعت و به راحتی اجرا کنند. برای خودکارسازی سیستمها، نیازی به ایجاد کد سفارشی نخواهند داشت و کافیست یک playbook بنویسند که وظایفی را که باید تکمیل شود مشخص کرده و Ansible نحوه رساندن سیستمها به حالت مورد نظر توسعه دهندگان را بررسی خواهد کرد.
مدیران سیستم
مدیران سیستم اغلب استرس شغلی را در نتیجه ساعات طولانی و انجام کارهای تکراری در سیستمهای متعدد تجربه میکنند، اما Ansible انجام این کارها را سادهتر میکند. Ansible میتواند وظایف ایجاد کاربر، مدیریت سرویس و نصب نرم افزار را انجام دهد.
معماران آیتی
معماران آیتی میتوانند زیرساخت فناوری اطلاعات را با هماهنگی، خودکارسازی، پیکربندی و استفاده از Ansible مدیریت کنند. آنها از Ansible برای استقرار چند لایه استفاده میکنند زیرا هیچ عامل یا طراحی امنیتی سفارشی در معماری Ansible مورد نیاز نیست.
جمعبندی
Ansible یک ابزار مدیریت پیکربندی متنباز است که روی سیستمهای یونیکس کار می کند اما می تواند روی ویندوز و لینوکس هم پیکربندی شود. یک ابزار فوق العاده برای خودکار کردن فعالیتها در سرورهای متعدد برای صرفه جویی در زمان، پول و انرژی است.