اگر شما هم در صنعت آی تی دستی داشته باشید، قطعا نام Ansible را شنیدهاید. از Ansible به عنوان یکی از ابزارهای مهم خودکار سازی فرآیندها در DevOps نام میبرند. به گفته بلاگ Ansible این ابزار تا کنون توسط بسیاری از سازمان ها استفاده شده است که تعداد آن ها بالغ بر هزار سازمان و موسسه است. ولی آنسیبل چیست و چرا اینقدر به سرعت محبوبیت پیدا کرده است؟ در این پست با این ابزار بیشتر آشنا خواهیم شد.
Ansible چیست؟
Ansible یک ابزار یا سکوی اتوماسیون متن باز است که به انجام وظایف فناوری اطلاعات مانند مدیریت پیکربندی، استقرار برنامه، هماهنگ سازی درون سرویس و فراهم سازی کمک می کند. امروزه با توجه به محیط های IT بسیار پیچیده و نیاز به مقیاس پذیری خیلی سریع، خودکار سازی امور اهمیت بسزایی دارد. اگر مدیران سیستم و توسعه دهندگان مجبور باشند همه کارها را به صورت دستی انجام دهند، نمی توانند همه چیز را در کنترل خود داشته باشند و امور را به سرعت انجام دهند. اتوماسیون وظایف پیچیده را سادهتر میکند؛ نه تنها مشاغل توسعهدهندگان را قابل مدیریتتر میکند، بلکه به آنها اجازه میدهد تا توجه خود را بر سایر وظایفی که برای سازمان ارزش میافزایند، متمرکز کنند. به عبارت دیگر، زمان را آزاد می کند و کارایی را افزایش می دهد. و Ansible، همانطور که در بالا ذکر شد، به سرعت در حال ارتقاء و رسیدن به اوج ابزارهای اتوماسیون است. بیایید به برخی از دلایل محبوبیت Ansible نگاه کنیم.
اکنون که دیدیم Ansible چیست، اجازه دهید مزایای مختلف Ansible را دریابیم.
مزایای Ansible
رایگان بودن: Ansible یک ابزار منبع باز است.
راهاندازی و استفاده بسیار ساده: برای استفاده از فایل های دستور (playbook) در Ansible نیازی به مهارتهای کدنویسی خاصی نیست (در این مورد بیشتر صحبت خواهیم کرد.)
قدرتمند: Ansible به شما امکان میدهد حتی گردشهای کاری بسیار پیچیده IT را مدلسازی کنید.
انعطاف پذیر: می توانید کل محیط برنامه را بدون توجه به جایی که مستقر شده است هماهنگ کنید. همچنین می توانید آن را بر اساس نیاز خود سفارشی کنید.
بدون نیاز به عامل (Agentless): شما نیازی به نصب هیچ نرم افزار یا پورت فایروال دیگری بر روی سیستم های مشتری که می خواهید خودکار کنید ندارید. همچنین لازم نیست یک ساختار مدیریت جداگانه ایجاد کنید.
کارآمد: از آنجایی که نیازی به نصب نرم افزار اضافی ندارید، فضای بیشتری برای منابع برنامه در سرور شما وجود دارد.
در ادامه، در مسیر خود برای درک چیستی Ansible، اجازه دهید ویژگیها و قابلیتهای انسیبل را بیشتر بررسی کنیم.
ویژگی های Ansible
۱. مدیریت پیکربندی
Ansible برای مدیریت پیکربندی بسیار ساده، قابل اعتماد و سازگار طراحی شده است. اگر مقدار اندکی آشنایی با مفاهیم آی تی داشته باشید، می توانید خیلی سریع شروع به استفاده از انسیبل کنید. پیکربندی های Ansible توصیف داده های ساده زیرساخت هستند و هم توسط انسان قابل خواندن و هم توسط ماشین ها قابل تجزیه هستند. تنها چیزی که برای شروع مدیریت سیستم ها نیاز دارید یک رمز عبور یا یک کلید SSH (Secure Socket Shell، پروتکل شبکه) است. مثالی از اینکه Ansible مدیریت پیکربندی را آسان می کند به این صورت است: اگر می خواهید یک نسخه به روز شده از نوع خاصی از نرم افزار را بر روی همه ماشین های موجود در شرکت خود نصب کنید، کافی است تمام آدرس های IP گره ها (نودها یا هاستها) را بنویسید و یک فایل دستور (playbook) Ansible بنویسید تا آن را روی همه گره ها نصب کند، سپس playbook را از ماشین کنترلی خود اجرا کنید.
۲. استقرار برنامه
Ansible به شما امکان می دهد به سرعت و به راحتی برنامه های چند لایه را اجرا کنید. برای خودکارسازی سیستم های خود نیازی به نوشتن کد سفارشی نخواهید داشت. شما وظایفی را که باید با نوشتن یک playbook انجام شوند فهرست می کنید، و Ansible چگونگی رسیدن سیستم های خود را به حالتی که می خواهید در آن قرار دهید، فهرست می کند. هنگامی که یک playbook را از دستگاهی که آنسیبل روی آن نصب است اجرا می کنید، Ansible از SSH برای برقراری ارتباط با میزبان های راه دور و اجرای تمام دستورات (وظایف) استفاده می کند.
۳. ارکستراسیون
همانطور که از نام آن پیداست، ارکستراسیون شامل آوردن عناصر مختلف در فرآیند یک عملیات کلی است - شبیه به روشی که یک رهبر موسیقی نت های تولید شده توسط همه سازهای مختلف را به یک اثر هنری منسجم تبدیل می کند. به عنوان مثال، با استقرار برنامه، شما نه تنها باید خدمات فرانتاند و بکاند را مدیریت کنید، بلکه پایگاههای داده، شبکهها، ذخیرهسازی و غیره را نیز باید مدیریت کنید. همچنین باید مطمئن شوید که تمام وظایف به ترتیب مناسب انجام می شود. Ansible از گردشهای کاری خودکار، تدارکات و موارد دیگر برای آسانتر کردن وظایف هماهنگ استفاده میکند. و هنگامی که زیرساخت خود را با استفاده از پلیبوک های Ansible تعریف کردید، به لطف قابل حمل بودن آن ها، میتوانید از همان ارکستراسیون هر کجا که نیاز دارید استفاده کنید.
۴. امنیت و انطباق
همانند استقرار برنامه، سیاست های امنیتی در سرتاسر سایت (مانند قوانین فایروال یا قفل کردن کاربران) را می توان همراه با سایر فرآیندهای خودکار پیاده سازی کرد. اگر جزئیات امنیتی را روی ماشین کنترل پیکربندی کنید و playbook مرتبط را اجرا کنید، همه میزبان های راه دور به طور خودکار با آن جزئیات به روز می شوند. این بدان معناست که شما نیازی به نظارت دستی بر هر دستگاه برای رعایت امنیت ندارید. و برای امنیت بیشتر، شناسه کاربری و رمز عبور مدیر به صورت متن ساده در Ansible قابل بازیابی نیست.
۵. Cloud Provisioning
اولین گام در خودکارسازی چرخه عمر برنامههای کاربردی، خودکار کردن زیرساختهای شماست. با Ansible، میتوانید پلتفرمهای ابری، میزبانهای مجازی، دستگاههای شبکه و سرورهای فلزی خالی را تهیه کنید.
در ادامه برای آشنایی بیشتر با Ansible، اجازه دهید نگاهی به معماری آن داشته باشیم.
معماری Ansible
حالا بیایید کمی در مورد اجزایی که محیط Ansible را تشکیل می دهند صحبت کنیم.
۱. ماژول ها
ماژول ها مانند برنامه های کوچکی هستند که Ansible آنها را از یک ماشین کنترلی به تمام گره ها یا میزبان های راه دور منتقل می کند. ماژول ها با استفاده از کتاب های پخش اجرا می شوند (به زیر مراجعه کنید)، و چیزهایی مانند خدمات، بسته ها و فایل ها را کنترل می کنند. Ansible همه ماژولها را برای نصب بهروزرسانیها یا هر کاری که لازم است اجرا میکند و پس از اتمام آن را حذف میکند. Ansible بیش از ۴۵۰ ماژول برای کارهای روزمره ارائه می دهد.
۲. پلاگین ها
همانطور که احتمالاً از بسیاری از ابزارها و پلتفرمهای دیگر میدانید، افزونهها تکههای کد اضافی هستند که عملکرد را افزایش میدهند. Ansible با تعدادی از پلاگین های خود ارائه می شود، اما شما می توانید افزونه های خود را نیز بنویسید. پلاگین های Action، Cache و Cache Back سه نمونه هستند.
۳. موجودی ها
تمام ماشینهایی که با Ansible استفاده میکنید (ماشین کنترل به علاوه گرهها) در یک فایل ساده به همراه آدرسهای IP، پایگاههای داده، سرورها و غیره فهرست شدهاند. پس از ثبت موجودی، می توانید با استفاده از یک فایل متنی ساده، متغیرهایی را به هر یک از میزبان ها اختصاص دهید. شما همچنین می توانید موجودی را از منابعی مانند EC2 (Amazon Elastic Compute Cloud) تهیه کنید.
۴. فایلهای دستور (playbook)
فایلهای دستوری Ansible مانند کتابچه راهنمای کارها هستند. آنها فایل های ساده ای هستند که با YAML نوشته شده اند، که مخفف YAML Ain’t Markup Language، یک زبان سریال سازی داده ها قابل خواندن توسط انسان است. playbook واقعاً قلب چیزی هستند که Ansible را بسیار محبوب کرده است، زیرا آنها وظایفی را که باید به سرعت و بدون نیاز به دانستن یا به خاطر سپردن نحو خاصی توسط کاربر انجام شود، توصیف میکنند. آنها نه تنها می توانند پیکربندی ها را اعلام کنند، بلکه می توانند مراحل هر کار سفارشی دستی را هماهنگ کنند و می توانند وظایف را همزمان یا در زمان های مختلف اجرا کنند.
هر فایل دستور (که به آن می توان کتاب دستور یا نمایشنامه نیز گفت) از یک یا چند بخش دستوری (نمایشنامه) تشکیل شده است و هدف یک بخش دستوری یا نمایشنامه ترسیم گروهی از میزبان ها به نقش های کاملاً تعریف شده است که توسط وظایف نمایش داده می شود.
۵. API ها
API های مختلفی (واسط های برنامه نویسی برنامه) در دسترس هستند، بنابراین می توانید انواع اتصال Ansible (به معنای چیزی بیش از SSH برای حمل و نقل)، برگشت به تماس و موارد دیگر را گسترش دهید.
اکنون که تا حدودی با آنسیبل آشنا شدیم، اجازه دهید نگاهی Ansible Tower بیندازیم.
نرم افزار Ansible Tower
Ansible Tower راه حل تجاری مبتنی بر وب است که توسط Red Hat برای مدیریت Ansible ایجاد شده است. شناخته شده ترین ویژگی آن یک رابط کاربری آسان برای مدیریت تنظیمات و استقرار است که نسبت به رابط کاربری اصلی پیشرفت قابل توجهی دارد. Ansible Tower شامل ویژگیهای ضروری Ansible است، بهویژه آنهایی که بهجای قالبهای متنی، در قالب گرافیکی راحتتر دیده میشوند. این نرم افزار برای حداکثر ۱۰ گره رایگان است.
اما یکی دیگر از مزایای انسیبل، قابلیت استفاده آن با دیگر فناوری های حوزه آی تی است. بیایید چند مورد از آن ها را بررسی کنیم.
مزایای استفاده از Ansible با Docker
Ansible در خودکارسازی Docker و عملیاتی کردن فرآیند ساخت و استقرار کانتینرها به خوبی عمل می کند. برای مثال، اگر یک سیستم IT سنتی را مدیریت میکنید، اضافه کردن قابلیتهای کانتینر-ابزار سخت است. اما Ansible نیاز به انجام فرآیندها به صورت دستی را برطرف می کند. چهار مزیت اصلی در استفاده از Ansible با Docker وجود دارد:
۱. قابل حمل/انعطاف پذیری
این واقعیت که فایل های دستوری Ansible قابل حمل هستند، به این معنی که میتوان از آنها در هر مکانی استفاده کرد و همچنین قابل تکرار هستند، میتواند در زمان و تلاش شما صرفهجویی کند. برای مثال، اگر از یک Dockerfile خالص برای ساخت یک کانتینر استفاده میکنید، میتوانید برنامه را فقط در یک ظرف Docker بازتولید کنید. از طرف دیگر، اگر از یک playbook در Ansible برای ایجاد یک کانتینر استفاده می کنید، می توانید برنامه را در Docker، در فضای ابری و غیره بازتولید کنید.
۲. قابلیت حسابرسی
حتی اگر کانتینرهایی ایجاد کنید، همچنان باید کدها را رصد کرده و آسیبپذیریها را ردیابی کنید. با استفاده از Ansible با Docker، میتوانید به راحتی ردیابی کنید که چه کسانی کدام کانتینرها را مستقر کردهاند و همچنین آنچه در همه کانتینرها وجود دارد، و بدانید که میتوانید هر کانتینری را در صورت لزوم بازسازی کنید.
۳. مدیریت کل محیط ها
با Ansible، از قبل می دانید که می توانید کانتینرهای Docker خود را مدیریت کنید. اما می توانید محیطی را که همه کانتینرها در آن قرار دارند، حتی در محیط های بسیار پیچیده نیز حفظ کنید. Ansible می تواند ظروف و غیر کانتینر را به طور همزمان نظارت کند، که ضروری است زیرا برنامه های کاربردی کانتینری اغلب نیاز به "گفتگو" با برنامه های غیر کانتینری دارند.
۴. نحو مشابه
همانطور که گفته شد، Ansible از فایل های YAML برای کتاب های پخش خود استفاده می کرد. Docker از اسکریپت های غیر YAML خود استفاده می کند، اما آنها بسیار شبیه هستند و تقریباً می توانند کارهای مشابهی را انجام دهند.
برای اینکه درک خود از Ansible را تکمیل کنیم، در ادامه یاد خواهیم گرفت که چگونه می توان از Ansible با Docker استفاده کرد.
چگونه از Ansible با Docker استفاده کنیم؟
ابتدا بیایید در مورد اینکه Docker چیست صحبت کنیم. Docker یک پلت فرم منبع باز مبتنی بر لینوکس است که برای کمک به استقرار خودکار برنامه ها در کانتینرهای نرم افزار استفاده می شود. (کانتینر واحدی از نرمافزار است که در آن کد و همه وابستگیهای آن با هم بستهبندی میشوند؛ راهاندازی نرمافزار به این روش به اجرای مطمئن و پیوسته برنامه در محیطهای محاسباتی متعدد کمک میکند.)
حالا بیایید بیشتر به استفاده از Ansible با Docker بپردازیم. همانطور که گفته شد، می توانید از Ansible برای خودکارسازی Docker و ساخت و استقرار کانتینرهای Docker استفاده کنید. ابتدا باید Docker SDK برای پایتون را نصب کنید. پس از نصب ابزارها، آخرین Rolebdd Ansible را بررسی کنید و سپس با استفاده از تکنیک سبز-آبی، استقرار را انجام دهید. تست کردن را فراموش نکنید! هر دو تست ادغام و استرس را اجرا کنید. در غیر این صورت، برنامه شما ممکن است به درستی اجرا نشود. مطمئن شوید که جدیدترین نسخه کانتینر را دارید، برنامه قدیمی را همزمان با برنامه جدید اجرا کنید، تستها را پس از استقرار اجرا کنید، اعلان آخرین نسخه را انجام دهید، پیکربندی را دوباره انجام دهید تا به نسخه جدید اشاره کند، و سپس در نهایت ، نسخه قبلی (قدیمی) را متوقف کنید.
هنگامی که برنامه تمام تست ها را گذراند و پیکربندی روی برنامه جدید تنظیم شد، در اینجا نحوه همکاری Ansible و Docker با یکدیگر آورده شده است. ابتدا مطمئن شوید که Git، Vagrant و VirtualBox را نصب کرده اید. سپس یک فایل Vagrant ایجاد کنید که دارای ماشین مجازی اوبونتو است. سپس فایل دستوری Ansible خود را اجرا کنید - این همه چیز را نصب و پیکربندی می کند. سپس می توانید برنامه خود را مستقر کنید. به یاد داشته باشید که برخی از مؤلفهها باید دانلود شوند، بنابراین ممکن است زمانی را که برای اولین بار استقرار میکنید اضافه کنید.
در ادامه، مدیریت کانتینرهای docker با استفاده از ماژولهای ansible را بررسی میکنیم.
مدیریت کانتینرهای Docker با استفاده از ماژول های Ansible
Ansible چندین ماژول برای مدیریت Docker دارد. تعدادی از این موارد عبارتند از docker_image، docker_container و docker_service. Docker_image برای ساخت، بارگذاری یا حذف تصاویر و همچنین برای برچسب گذاری و بایگانی تصاویر استفاده می شود. Docker_container به شما امکان می دهد کانتینرهای Docker را ایجاد و نابود کنید، همچنین آنها را شروع، متوقف و به روز کنید. Docker_service در راه اندازی، خاموش کردن و مقیاس بندی خدمات کمک می کند. از آنجایی که بهروزرسانیها به طور مداوم برای Ansible و Docker انجام میشود، به دنبال جدیدترین لیست ماژولها و عملکردهای آنها، همراه با سیستم مورد نیاز و موارد دیگر، در راهنمای Ansible برای کار با Docker باشید.
نتیجه گیری
به طور خلاصه، استفاده از Ansible با Docker می تواند فرآیندهای شما را به طور قابل توجهی ساده کند و به شما امکان می دهد با کانتینرها کار کنید و همه آن کارها را خودکار کنید! جای تعجب نیست که ترکیب Ansible-Docker بسیار محبوب است. و یادگیری نحوه استفاده از Ansible با Docker مطمئنا به نفع سازمان شما خواهد بود. به علاوه این که به گفته Dice یکی از پر در آمدترین مهارت های دوآپس مهارت در آنسیبل است.
در این پست، به دانش عمیقی درباره چیستی Ansible رسیدیم. برای آشنایی بیشتر و یا پیادهسازی آنسیبل در سازمان خود با ما تماس بگیرید و از خدمات DevOps و البته آنسیبل آپکدرز بهره مند شوید.