انسیبل چیست؟ آشنایی با ویژگیها، معماری، مزایا و معایب
انسیبل چیست؟ Ansible ابزاری قدرتمند است که به تیمهای DevOps کمک میکند فرایندهای زیرساخت را خودکارسازی کنند. از آنجایی که فراهم کردن زیرساختهای IT پیچیده و چالشبرانگیز است، انسیبل کمک میکند تا زیرساخت خود را بهطور خودکار مدیریت کنید. در این مقاله از بلاگ ابر زس، به معرفی این ابزار کاربردی و مزایای استفاده از آن میپردازیم. خواندن این مطلب به شما کمک میکند تا ازطریق آشنایی با فرایند اتوماسیون انسیبل و پیادهسازی آن، مدیریت و کنترل بهینهتری روی زیرساخت IT داشته باشید.
انسیبل چیست؟
انسیبل (Ansible) یک پلتفرم متنباز، مبتنی بر خط فرمان و نوشته شده به زبان پایتون بوده که کمپانی Red Hat ارائه کرده است و به سازمانها این امکان را میدهد تا بسیاری از فرآیندهای زیرساختی که اغلب بهصورت دستی انجام میشوند را بهطور خودکار انجام دهند؛ فرایندهایی مانند:
- آمادهسازی و راهاندازی سریع سیستمهای جدید
- مدیریت پیکربندی
- دیپلوی کردن خودکار اپلیکیشنها
- ارکستریشن
در پاسخ به این سوال که Ansible چیست، باید بگوییم یک پلتفرم کامل متن باز است. بهعبارتی، برخلاف ابزارهای ساده اتوماسیون، انسیبل چیزی فراتر از یک اسکریپتنویسی ساده است. این پلتفرم، یک چارچوب بینیاز به Agent را برای ایجاد، تست و مدیریت محتواها بهطور خودکار ارائه میدهد.
به زبان ساده، انسیبل مانند یک آشپز ماهر است که مواد اولیه را بهصورت ترکیبات مختلف از قبل آماده کرده و دستورالعملهای دقیق برای تهیه انواع غذاها را نیز میداند و بهطور خودکار و بدون معطلی، هر غذایی که از او بخواهید در اختیارتان قرار میدهد.
ویژگی پلتفرم اتوماسیون انسیبل چیست؟
تصور کنید با چیدن چند قطعه بههمپیوسته مانند پازل، زیرساخت سیستم و سرورها را بهشکلی هوشمندانه کنترل کنید. پلتفرم اتوماسیون انسیبل (Ansible Automation Platform) دقیقا همین کار را انجام میدهد. این پلتفرم از بخشهای مختلفی تشکیل شده که هر کدام ویژگی مشخصی دارند.
محیطهای اجرای اتوماسیون
این محیطها به عنوان کانتینرهای کوچکی عمل میکنند که تمام امکانات لازم برای اجرای دستورات خودکارسازی انسیبل (Playbooks و Roles) را بههمراه دارند: کانتینرهایی که سازگار و قابل حمل هستند و بهراحتی در هر کجا میتوانید از آنها استفاده کنید.
بیشتر بخوانید: کانتینر چیست؟
کنترلر اتوماسیون
کنترلر، مغز متفکرِ دنیای اتوماسیون انسیبل است. کنترلر وظیفه دارد تا استقرار، آغاز و بررسی اتوماسیون را بهصورت استاندارد مدیریت کند. این کنترلر از API و رابط وب استفاده کرده و project AWX مبتنی است.
شبکه اتوماسیون
شبکه اتوماسیون هوشمند به سازمانها اجازه میدهد تا خودکارسازی را در سطح وسیع و کاملا سازگار با سرویس ابری انجام دهند. شبکه اتوماسیون، برنامهریزی و اجرای اتوماسیونهای پیچیده و گسترده را ساده کرده و امکان نظارت، کنترل و گزارشگیری دقیق را فراهم میکند. پلتفرم انسیبل از قدرت شبکه خود کمک میگیرد تا فرایند اتوماسیون را بین نودهای اجرایی مختلف توزیع کند و توان اجرا را برای دستگاههایی افزایش دهد که قدرت اجرای برخی ماژولها را ندارند.
ابزارهای محتوای انسیبل
سازندگان و توسعهدهندگان محتوا در انسیبل میتوانند از مجموعه و ماژولهای تأییدشده برای استقرار سریعتر و کارآمدتر فرایند اتوماسیون استفاده کنند. ابزارهای انسیبل مراحل ساخت و استقرار محیطهای اجرایی را ساده میکنند.
هاب اتوماسیون
هاب اتوماسیون انسیبل به کاربران اجازه میدهد تا بهسرعت محتوای موردنظر خود را که توسط Redhat پشتیبانی میشود، پیدا کرده و از آن در محیطهای موردنیاز استفاده کنند.
اکنون که با اجزای کلیدی پلتفرم خودکارسازی انسیبل آشنا شدید، به معماری انسیبل میپردازیم.
معماری انسیبل؛ نگاهی دقیقتر بر اجزای Ansible
انسیبل با یک معماری ساده و کارآمد بر پایه اجزای زیر است:
گره کنترلی (Control Node)
از گره کنترلی دستورات اصلی صادر میشوند. با اجرای دستورات «ansible-playbook» که در ادامه با آن آشنا خواهید شد، انسیبل کارش را آغاز میکند. هرچند یک گره کنترلی کافیاست، اما برای اطمینان بیشتر، به یک گره پشتیبان هم نیاز است.
گرههای مدیریتشده (Managed Node)
این گرهها تحت فرمان گره کنترلی قرار میگیرند و بهصورت خودکار پیکربندی و مدیریت میشوند. انسیبل با اتصال ویندوز و لینوکس به گرههای مدیریتشده، برنامههایی به نام «ماژولهای انسیبل» را به آنها میفرستد و بهاصطلاح فرایند آنها را خودکار میکند.
ماژولها (Modules)
در پاسخ به اینکه منظور از ماژول انسیبل چیست، باید بگوییم این ماژولها مثل دستورالعملهای کوچکی هستند که وضعیت مطلوب سیستم را توصیف میکنند و هرکدام کار خاصی انجام میدهند. این دستورها به همه نودهای موجود در شبکه یا به یک هاست در مکانی دیگر ارسال میشوند. انسیبل بهطور پیشفرض از طریق SSH این ماژولها را روی گرههای مدیریتشده اجرا میکند و بعد از اتمام کار، آنها را حذف مینماید. بیش از ۴۵۰ ماژول مختلف در انسیبل وجود دارد. اگر ماژولها روی گرههای مدیریتشده قابل اجرا نباشند، در این حالت، انسیبل روی گره کنترلی اجرا میشود و دستورات لازم را صادر میکند.
افزونه (Plugin)
نقش افزونه در انسیبل چیست؟ در پاسخ به این سوال باید بگوییم پلاگین، قطعه کدهایی است که به انسیبل قابلیتهای بیشتری میدهد. در انسیبل، پلاگینها نوع خاصی از ماژول به حساب میآیند. قبل از اینکه ماژولی روی گرهها اجرا شود، پلاگینها روی واحد کنترل اصلی اجرا میشوند. برای مثال، پلاگینهای Callback به شما امکان میدهند به رویدادهای مختلف Ansible متصل شوید. همچنین برای به حداقل رساندن هزینههای ذخیره اطلاعات، میتوانید از پلاگین کش استفاده کنید. پلاگین اکشن نیز از ماژولهای سمت کاربر است که عملیاتی را روی سیستم کنترلر قبل از فراخوانی مستقیم ماژولها انجام میدهد.
انبارها (Inventories)
انبارها در انسیبل لیست کاملی از تمام لوازم موردنیاز سرور از جمله آدرس IP، دیتابیس، همه سرورهایی که انسیبل باید آنها را مدیریت کند و هر اطلاعات ریز و درشتی را دراختیارتان قرار میدهند. با ثبت یک سرور در انبار، میتوانید بهراحتی با یک فایل ساده، تنظیمات مختلف را روی آن اعمال کنید.
رابطهای برنامهنویسی (API)
API، دست انسیبل در دنیای ارتباطات را باز کرده است. این یعنی علاوهبر SSH، میتواند با برنامههای مختلف در فضای ابری عمومی و خصوصی هم ارتباط برقرار کند.
سرورها و شبکهها
انسیبل، هاست را مانند یک ربات کنترل میکند. هاست ممکن است هر رایانهای صرفنظر از سیستمعامل آن باشد؛ از لینوکس و ویندوز گرفته تا مک. انسیبل از یک مدل داده خاص برای کنترل میزبانها استفاده میکند که به آن اجازه میدهد تا بهراحتی هر پلتفرم سختافزاری را پشتیبانی کند.
ارائه ابر
چه اقدام به خرید سرور ابری عمومی و چه اختصاصی کرده باشید، انسیبل با آن ارتباط برقرار میکند. بهکمک انسیبل میتوانید منابع پردازشی و ذخیرهسازی ابری خود را حتی از راه دور مدیریت کرده و فرایندهای خود را خودکار نمایید.
پیکربندی دیتابیس مدیریت شده (CMDB)
CMDB یک پایگاه داده است که به عنوان مخزنی برای سیستمها عمل میکند. با استفاده از کد Ansible-CMDB، میتوانید بهطور خودکار نتایج جمعآوری دادههای انسیبل را به یک صفحه استاتیک HTML تبدیل کنید.
Playbook
کار Playbook در Ansible چیست؟ این اجزا مانند دفترچه راهنمای انسیبل هستند. دستورالعملهای مختلفی به ترتیب مشخصی در آنها نوشته شده است که انسیبل آنها را اجرا میکند. مثلاً یک Playbook سرورها را بهروزرسانی و نرمافزار جدیدی را نصب کرده و بعد از تمام شدن کارها، خودش را پاک میکند. در ادامه، نگاه دقیقتری به این جزء مهم خواهیم انداخت.
Ansible playbook چیست؟
Playbook Ansible زبان خودکارسازی قدرتمند و در عین حال سادهای ارائه میدهد. با استفاده از Playbook میتوانید بسیاری از وظایف را بهحالت خودکار اجرا کنید، از جمله:
- پیکربندی سرورها و سیستمها
- استقرار برنامهها و نرمافزارها
- توزیع تغییرات در زیرساخت
- خودکارسازی وظایف تکراری
Playbook قابل خواندن است و به زبان قابل فهم YAML نوشته شده است؛ درنتیجه شما میتوانید بدون نیاز به دانش فنی زیاد، آنها را بفهمید و استفاده کنید. همچنین این قابلیت را دارند که چندین بار بدون اینکه تاثیر منفی بگذارند، روی یک سیستم اجرا شوند. Playbook نوع ساده معمولاً برای انجام وظایف ساده مانند نصب یک برنامه استفاده میشود. نوع پیچیده آن، برای انجام وظایف پیچیدهتر مانند هماهنگسازی شبکهای از سرورها استفاده مورد استفاده قرار میگیرد.
در پاسخ به اینکه Playbook در انسیبل چیست، باید بگوییم مثل دستورالعملهای آشپزی هستند که به انسیبل میگویند چه کارهایی باید انجام دهد. تصور کنید قصد دارید ۱۰ سرور جدید راهاندازی و نرمافزار خاصی را روی آنها نصب کنید. با استفاده از انسیبل، میتوانید یک Playbook بنویسید که تمام مراحل لازم را بهصورت خودکار انجام دهد. این Playbook را میتوان بارها و بارها برای راهاندازی هر تعداد سرور که نیاز دارید اجرا کرد؛ بدون اینکه نیازی به تکرار دستی مراحل باشد.
در واقع، انسیبل با این معماری ساده و قدرتمند، به شما این امکان را میدهد که بدون دردسر، زیرساخت IT خود را کنترل و مدیریت کنید. در قسمت بعدی بهطور جزئیتر به نحوه کار این پلتفرم کاربردی نگاه خواهیم کرد.
انسیبل چگونه کار میکند؟
انسیبل برای برقراری ارتباط از OpenSSH استفاده میکند. OpenSSH پروتکلی امن، رمزنگاری شده و پیادهسازی شده بر اساس پروتکل SSH است که انسیبل از آن برای ورود، انتقال دیتا از راه دور، احراز هویت و ارسال دستورات استفاده میکند. انسیبل از قالبهای «playbook» استفاده میکند تا دستورالعملهایی را برای اتوماسیون کارها ارائه دهد. Playbook این امکان را فراهم میکند تا بدون نیاز به آموزشهای چالشبرانگیز یا یادگیری زبان برنامهنویسی پیچیده، بتوانید اقدامات تکراری را بهصورت خودکار انجام دهید. برای مثال، جهت هربار نصب نرمافزار یا راهاندازی سرورهای جدید، به جای انجام تک تک دستورات، فقط کافیاست Playbook را اجرا کنید.
Ansible کد اپلیکیشنها، برنامهها و دستورالعملهای زیرساخت را از طریق ماژولها به گرههای مدیریتشده ارسال میکند. منظور از گرههای مدیریت شده کلاینتها، سرورهای فیزیکی یا ماشینهای مجازی هستند. Ansible به گرههای مدیریتشده در یک شبکه متصل میشود و یکی از ماژولها یا همان دستورالعملهای کوچک را به آن گره میفرستد. سپس ماژول را از طریق SSH اجرا میکند و پس از اتمام کار، آن را حذف میکند.
نکته مهم اینجاست که انسیبل بدون نیاز به نصب هیچ نرمافزار یا سرویس اضافی روی گرههای مدیریتشده کار میکند. این ویژگی باعث میشود پلتفرم Ansible بدون عامل باشد و بهراحتی با دستگاههای مختلف ارتباط برقرار کند. همچنین ماژولها بر اساس الزامات اتصال، رابط و اتصال نهایی نوشته میشوند. هیچ سرور، Daemon یا پایگاه داده اضافی مورد نیاز نیست؛ بنابراین میتوانید برای ایجاد تغییرات از برنامههای ترمینال، ویرایشگرهای متن و سایر سیستمهای کنترل نسخهای موردعلاقه خودتان استفاده کنید.
کاربرد انسیبل چیست؟
این ابزار، طبق گفته کمپانی سازندهاش، انقلابی در اتوماسیون اقدامات تکراری در حوزه IT است. از جمله مواردی که انسیبل در آن حرف ویژهای برای گفتن دارد، شامل موارد زیر است:
آمادهسازی خودکار زیرساخت
انسیبل، اسکریپتنویسیهای موقت یا مدیریت دستی زیرساخت را با یک فرآیند خودکار و تکرارپذیر جایگزین میکند. از آنجایی که همه چیز در قالب اسکریپتهای ساده نوشته شده است، به سازمانها امکان میدهد زیرساخت را به عنوان کد (IaC) دراختیار داشته باشند. با استفاده از Playbook های انسیبل، میتوانید یک ماشین مجازی بسازید و از آن برای چندین ماشین مجازی اضافی با جزئیات زیرساخت مشابه استفاده کنید. پس از آمادهسازی محیط، میتوانید آن را بهراحتی بهعنوان بخشی از چرخه عملیاتی IT پیکربندی کنید. به بیان ساده، فرایند اتوماسیون با انسیبل نیازی به راهاندازی دستی صدها یا هزاران سرور ندارد.
مدیریت پیکربندی
منظور از مدیریت پیکربندی در انسیبل چیست؟ در پاسخ باید گفت کارهای روتین IT را میتوان بهراحتی به انسیبل سپرد. این ابزار، کمحجم، سازگار، قابلاعتماد و امن است. همچنین از توصیفهای ساده زیرساخت داده استفاده میکند که برای انسان و ماشین قابلخواندن است. این قابلیتها به مدیران سیستم، توسعهدهندگان، تیمهای DevOps و مدیران IT اجازه میدهد تا فرایندهای پیکربندی روتین را بهراحتی خودکار کنند.
استقرار برنامه
انسیبل یک چارچوب مشترک برای پیکربندی خدمات و استقرار برنامهها، از جمله برنامههای چندلایه ارائه میدهد. دیگر نیازی به نوشتن کد سفارشی برای خودکارسازی استقرار برنامه نیست. در عوض، فقط کافیاست توضیحات ساده را در فایلهای YAML بنویسید. همچنین خواندن، پیادهسازی و بهروزرسانی فایلهای YAML آسان است.
مدیریت کانتینرهای Docker با Ansible
Docker یک ابزار محبوب برای ساخت و اجرای کانتینرهای نرمافزاری است. کانتینرها را میتوان به آپارتمانهای کوچکی تشبیه کرد که هر برنامه در آن مستقل عمل میکند. Ansible با رابط کاربری ساده و ماژولهای داخلی قدرتمند، به شما امکان میدهد اسکریپتهای خودکارسازی برای مدیریت کانتینرهای Docker ایجاد کنید. این اسکریپتها به شما اجازه میدهند وظایف مختلفی از جمله ساخت و راهاندازی کانتینر، بهروزرسانی و ارتقای برنامههای کانتینر و حذف کانتینرهای قدیمی و غیرضروری را انجام دهید.
بیشتر بخوانید: تفاوت داکر و ماشین مجازی
مزایای انسیبل چیست؟
Ansible ابزاری انقلابی برای دنیای IT است. این ابزار به مدیران سیستم، توسعهدهندگان و تیمهای DevOps امکان میدهد تا طیف وسیعی از وظایف را بهصورت خودکار انجام دهند. از نصب نرمافزار و راهاندازی زیرساخت گرفته تا پیکربندی سیستم و بهروزرسانیها، انسیبل با قدرت و سادگی بینظیر خود، فرآیندهای IT را متحول میکند. مزایای انسیبل به همینجا ختم نمیشود. این ابزار با قابلیت «هماهنگسازی»، جریان کاری پیشرفتهای برای استقرار برنامهها فراهم میکند. انسیبل همچنین با ارتقای سطح امنیتی و انطباق با قوانین، آسودگی خاطر را از نظر امنیت ابزار برای شما به ارمغان میآورد.
علاوه بر موارد بالا، فواید دیگری از انسیبل در انتظارتان خواهد بود:
- با انسیبل، شناسایی، عیبیابی و حل مشکلات عملیاتی و امنیتی در سراسر زیرساخت IT آسانتر از همیشه است.
- این ابزار، اتوماسیونسازی را به شکلی مشارکتی و مقیاسپذیر فراهم میکند.
- انسیبل امکان راهاندازی خودکار سرور اختصاصی یا ابری را بهصورت راحت و قابل کنترل ارائه میدهد.
- Ansible امکان انتقال فرایندهای خودکار به سرورهایی در مکانی دیگر را به سادگی فراهم میکند.
- این ابزار کاربردی، با ابزارهای آنالیز، تحلیل و مدیریت محتوا، کنترل دقیق و جامعی را بر فرآیندهای خودکارسازی شما ارائه میدهد.
معایب انسیبل چیست؟
انسیبل در اصل یک ابزار مبتنی بر خط فرمان است اما ابزار AWX امکان کار با انسیبل از طریق یک رابط کاربری را نیز فراهم میکند. با اینکه AWX فرایند کار با انسیبل را به شدت راحت میکند اما همچنان جای پیشرفت دارد. علاوه بر این برخی از دستورات انسیبل، از طریق AWX قابل اجرا نیست و AWX گاه با مشکل عدم همخوانی دستورات با خط فرمان روبرو میشود.
همچنین بر خلاف برخی ابزارهای خودکارسازی دیگر از جمله Puppet، انسیبل از ردیابی وابستگیها بیبهره است. در نتیجه تنها دستورات را به ترتیب اجرا میکند و هنگامی که دستورات به پایان برسند یا با خطا مواجه شوند، متوقف میشود. اما بسیاری از کاربران ترجیح میدهند با استفاده از ابزار خودکارسازی بتوانند بدون توجه به هرگونه تغییر در شرایط محیطی، به یک حالت از پیش تعریف شده برسند؛ قابلیتی که انسیبل نمیتواند آن را فراهم کند.
انسیبل در مقایسه با سایر ابزارهای خودکارسازی از جمله Chef و Puppet سابقه کمتری دارد. در نتیجه جامعه کاربران و توسعهدهندگان آن محدودتر و نیز منابع کمتری برای عیبیابی و رفع مشکل آن در دسترس است.
تفاوت Chef ،Puppet و سایر ابزارها با Ansible چیست؟
در دنیای فناوری اطلاعات، ابزارهای مختلفی برای خودکارسازی زیرساخت، استقرار برنامه و مدیریت پیکربندی با هم رقابت میکنند. انسیبل یکی از نامهای مطرح در این میدان است، اما رقبای سرسختی همچون Chef و Puppet نیز دارد. هرکدام از این ابزارها قابلیتهای بسیاری ارائه میدهند، از محصولات متنباز و تجاری گرفته تا مدلهایی با پشتیبانی اختصاصی. اینجاست که انتخاب بهترین ابزار برای هر سازمان بستگی به نیاز آن سازمان و بررسی دقیقتر هر یک از این ابزارها دارد. جالب است بدانید با وجود رقابت پایاپای این سه ابزار، گاهی ممکن است همتیمی شوند! برای مثال، Puppet پیکربندیها را انجام میدهد و انسیبل نقش هماهنگکننده را برعهده میگیرد. همچنین ممکن است توسعهدهندگان از Chef استفاده کنند، در حالی که تیم عملیات، انسیبل را بهکار میگیرد.
اکنون نگاه دقیقتری به رقبای انسیبل خواهیم انداخت:
- Chef: یک پلتفرم متنباز برای مدیریت سیستمها و خودکارسازی زیرساخت ابری است.
- Puppet: ابزار مدیریت سیستم متنباز بوده که تمرکز اصلی آن بر مدیریت و خودکارسازی متمرکز پیکربندیها است.
- PowerShell Desired State Configuration (یا DSC): یکی از ویژگیهای PowerShell انجام خودکار تنظیمات سیستمعاملهای ویندوز و لینوکس است.
- SaltStack: ابزاری برای مدیریت پیکربندی و ارکستریشن بوده که با استفاده از یک مخزن مرکزی، زیرساخت IT را آماده میکند.
- Terraform: یک ابزار متنباز DevOps برای IaC (مخفف Infrastructure as Code) که با برنامهنویسی، منابع فیزیکی مورد نیاز برای اجرای برنامهها را آماده میکند.
- Vagrant: ایجاد خودکار مجموعه کوچکی از ماشینهای مجازی که اغلب برای تکرار محیطهای توسعه استفاده میشود.
انسیبل و Salt از YAML استفاده میکنند که زبانی ساده و خوانا با امکان یادگیری آسان است. Chef ترکیبی از JSON و Ruby را به کار میگیرد که به کاربران انعطاف بیشتری میدهد، اما یادگیری آن پیچیدهتر است. Puppet از یک زبان اختصاصی و اعلانی استفاده میکند که یادگیری آن ممکن است زمان ببرد. PowerShell DSC نیز از زبان برنامهنویسی PowerShell استفاده میکند.
ابزارهای مدیریت پیکربندی نه تنها برای سرورها، بلکه برای مدیریت کانتینرها نیز کاربرد دارند. انسیبل با پروژه Ansible Container امکان ساخت، استقرار و مدیریت کانتینرها را فراهم میکند. اگرچه ممکن است اینطور به نظر برسد Ansible و دیگر ابزارها با فناوری ادغام مداوم (CI) مانند Jenkins همپوشانی دارد، اما بهخوبی میتوانند با فناوریهای ادغام مداوم همگام شوند و مدیریت استقرار را پس از تکمیل فرآیند CI برعهده بگیرند.
جمعبندی
در این مقاله به این موضوع پرداختیم که انسیبل چیست. این ابزار قدرتمند و انعطافپذیر برای خودکار کردن فرایندهای زیرساخت مورد استفاده قرار میگیرد. در این مطلب، ویژگیها، مزایا و کاربرد این ابزار قدرتمند را بررسی کردیم.