معرفی Ansible
اگر در حوزه IT فعالیتی دارید، احتمالاً واژه Ansible به گوشتان خورده است. CIO آن را محبوب DevOps برای اتوماسیون نرمافزار مینامد و اضافه میکند که هیچوقت انتخاب اول اتوماسیون (automation) نرمافزار در بسیاری از سازمانها نبوده است. ولی بیش از 1000 شرکت از Ansible استفاده میکنند. درواقع انسیبل یک ابزار متنباز مدیریتی است که برای کنترل و پیکربندی خودکار فرآیندها در سرورها و کلاینتهای لینوکسی و هماهنگسازی وظایف کاربرد دارد. این ابزار در سال 2015 توسط شرکت Ansible Inc و تیم Ansible Workers به زبان برنامهنویسی پایتون طراحی و ساخته شد و تحت مالکیت Redhat قرار گرفت. در حال حاضر هرگونه استراتژیهای پیاده شده و طرحریزیها توسط Redhat انجام میشود.
از ابزارهای Puppet, Chef و Ansible برای اجرای عملیات فرآیند اتوماسیون یا اتوماتیک کردن Task ها استفاده میشود. البته ابزارهای مختلفی برای این کار وجود دارد که معروفترین آنها، موارد بالا هستند.
با مقایسههای مختلف این سه ابزار ازلحاظ عملکرد و نحوه کار با آنها نتیجهای که حاصل میشود استفاده از انسیبل به دلیل کارایی و یادگیری آسان گزینهای مناسب برای اتوماسیون کردن سیستمهای لینوکسی است.
Automation اتوماسیون چیست
شاید واژهی Automation یا IT Automation را زیاد شنیده باشید. automation به زبان ساده یعنی تبدیل کردن فرآیندهای تکراری از حالت دستی به حالت اتوماتیک. اتوماسیون (automation) باعث سادهتر شدن کارهای پیچیده میشود و مشاغل توسعهدهندگان را قابلکنترلتر میسازد و علاوه بر این به آنها امکان میدهد تا توجه خود را به سایر کارهایی که به یک سازمان ارزش میدهند، منعطف کنند. بهعبارتدیگر، باعث آزادتر شدن زمان و افزایش کارایی میشود. همانطور که در گفتیم Ansible بهسرعت در حال بالا رفتن در لیست ابزارهای اتوماسیون دنیاست.
چرا از ansibl استفاده میکنیم
ابزارهای دیگری مانند Ansible همانطور که گفتیم مثل Puppet و Chef وجود دارند. Agentless بوده و نصب به نیاز Agent بر روی یا دیوایس نیست و تنها از پروتکل SSH برای ارتباط و مدیریت آنها استفاده میکند؛ اما در Puppet و Chef نیاز به نصب Agent هست.
انسیبل بر پایه زبان پایتون ساختهشده و از فرمت YAML که یک زبان پیکربندی ساده است، استفاده میکند و یادگیری آن را آسانتر میکند؛ اما در puppet و Chef از زبان Ruby استفادهشده است. برای مدیریت لینوکس (linux) نیاز به python و برای مدیریت ویندوز هم نیاز به powershell دارد و برای ارتباط و مدیریت هم از ssh استفاده میکند.
مزایای ansible چیست
ساده بودن راهاندازی و استفاده از آن: برای استفاده از پلیبوک های انسیبل نیاز به مهارت خاصی در برنامهنویسی نیاز ندارید.
رایگان بودن: انسیبل ابزاری منبع باز است.
قدرتمند بودن: انسیبل این قابلیت را به شما میدهد که حتی از ورک فلوهای خیلی پیچیده IT هم الگو بگیرید.
انعطافپذیری: میتوانید همهی محیط برنامه را بدون در نظر گرفتن محل استقرار آنها تنظیم کنید. همچنین بر اساس نیاز خود آن را سفارشیسازی کنید.
Agentless بودن: با استفاده از انسیبل نیازی به نصب هیچ نرمافزار یا پورت فایروال دیگری روی سیستمهای کلاینتی که میخواهید بهصورت خودکار دربیاورید وجود ندارد. همچنین لازم نیست یک ساختار مدیریت جداگانه نیز تنظیم کنید.
کارآمدی: چون نیازی به نصب هیچ نرمافزار اضافی نیست، فضای بیشتری برای منابع برنامه در سرور شما وجود دارد.
ویژگیهای ansible چیست
مدیریت پیکربندی ansible
نرمافزار انسیبل جهت مدیریت تنظیمات، خیلی ساده، قابلاعتماد و سازگار طراحیشده است. اگر مدتی است که در حوزه IT فعالیت دارید، میتوانید خیلی سریعتر با آن ارتباط برقرار کنید و آن را استفاده کنید. پیکربندیهای انسیبل، دیسکریپشن یا توصیف سادهی دادههای زیرساختها است که هم توسط انسانها قابلخواندن و هم توسط ماشینها قابلتجزیه است. همهچیزی که برای شروع مدیریت سیستم نیاز دارید، رمز عبور یا کلید SSH Secure Socket Shell، یک پروتکل شبکه است.
استقرار برنامه
انسیبل به شما امکان میدهد بهسرعت و با آسانی برنامههای چندرسانهای را مستقر کنید. اضافه بر این برای اتوماسیون سیستمهای خود، نیازی به نوشتن کد سفارشی نیست. شما تسک هایی را که باید با نوشتن یک playbook انجام شود را لیست کنید و انسیبل میفهمد که چگونه شما سیستمهای خود را به وضعیتی که میخواهید در آن قرار بگیرند، برساند؛ یعنی، شما نیازی به پیکربندی برنامهها روی هر دستگاه بهصورت دستی نخواهید داشت. هنگامیکه از سیستم کنترل خود یک playbook را اجرا میکنید، Ansible از SSH برای برقراری ارتباط با میزبانهای از راه دور یا remote hosts و اجرای همه task ها استفاده میکند.
امنیت و برابری
مانند استقرار برنامهها، سیاستهای امنیتی وبسایت نیز (مانند قوانین فایروال یا قفلکردن کاربران) میتوانند همراه با سایر فرایندهای خودکار اجرا شوند. اگر جزئیات امنیتی را بر روی ماشین کنترل پیکربندی کرده و playbook مربوطه را اجرا کنید، همه remote host ها بهطور خودکار با آن جزئیات بهروز میشوند. این یعنی که برای رعایت امنیت، نیازی به کنترل هر دستگاه بهصورت دستی و بهطور مستمر نیست.
ارائهی ابر
اولین مرحله در اتوماسیون چرخه عمر برنامههایتان، خودکار کردن تأمین زیرساختهای شما است. با نرمافزار انسیبل میتوانید سیستمعاملهای ابری، میزبانهای مجازی، دستگاههای شبکه و سرورهای bare-metal را تهیه کنید.
قطعات تشکیلدهندهی Ansible کدماند
ماژولها
ماژولها مثل برنامههای کوچکی هستند که انسیبل از یک ماشین کنترل به سمت تمام نودها یا remote hosts حرکت میدهد. ماژول ها با استفاده از playbook ها اجرا میشوند و مواردی مانند سرویسها، پکیجها و فایلها را کنترل میکنند.
موجودیها یا inventories
همهی دستگاههایی که با Ansible استفاده میکنید (ماشین کنترل و نودها) در یک پَروَنجا همراه با آدرس IP، پایگاه داده، سرور و… لیست شدهاند. پس از ثبت موجودی میتوان متغیرها را با استفاده از یک پَروَنجا متنی به هر یک از میزبانها اختصاص دهید.
پلاگین ها
درواقع افزونهها کدهای اضافی هستند که باعث افزایش قابلیت میشوند. نرمافزار انسیبل خود تعدادی افزونه دارد، ولی شما هم میتوانید آنها را بنویسید. پلاگینهای Action،Cache و Callback سه نمونه از این افزونهها هستند.
Playbook
ansible playbook به لغویشان کتابهای بازی هستند، مانند کتابهای راهنمای برای کارها عمل میکنند. درواقع فایلهای سادهای هستند که با YAML، مخفف YA ML Ain’t Markup Language که یک زبان مجموعهسازی شدهی دادههای قابلخواندن توسط انسان است، نوشتهشدهاند.
Playbook ها مؤثرترین عامل در محبوبیت ansible است؛ زیرا آنها وظایفی را برای اینکه خیلی سریع انجام شوند تعریف میکنند؛ بدون اینکه کاربر نياز به دانستن ترکیب خاصی داشته باشد.
Api ها
Api ها یا application programming interfaces (رابطهای برنامهنویسی برنامه) مختلفی در دسترس هستند، پس میتوانید انواع مختلف اتصال Ansible (که این به معنای چیزی بیشتر از استفاده از SSH برای انتقالات است) callback ها و دیگر چیزها را گسترش دهید.