Ansible چیست و چگونه از Ansible در Docker استفاده کنیم؟
فهرست مطالب
Toggleاگر مشغول فعالیت در حوزه فناوری اطلاعات هستید، حتما نام Ansible را شنیدهاید. CIO آن را عزیز DevOps برای اتوماسیون نرم افزار مینامد و اضافه میکند که Ansible «از هیچ، حالا به عنوان گزینه شماره ۱ برای اتوماسیون نرمافزار در بسیاری از سازمانها انتخاب شده است». StackShare بیش از ۱۰۰ شرکت را که از Ansible استفاده میکنند، از جمله Intel، Evernote و Hootsuite و Ansib1 فهرست کرده است. وبلاگ le میگوید اپل و ناسا نیز آن را پذیرفتهاند. Ansible چیست و چرا اینقدر سریع محبوبیت پیدا کرده است؟ در این مطلب به آن میپردازیم و همچنین کمی در مورد اینکه چرا Ansible و Docker با هم خوب کار میکنند و نحوه استفاده از Ansible در Docker را به شما خواهیم گفت. در ادامه نگاهی اجمالی به این خواهیم داشت که چرا ترکیب Ansible-Docker بسیار قدرتمند است.
Ansible چیست؟
Ansible یک ابزار یا پلتفرم اتوماسیون متن باز است که برای وظایف فناوری اطلاعات مانند مدیریت پیکربندی، استقرار برنامه، هماهنگسازی درون سرویس و تامین منابع استفاده میشود. اتوماسیون این روزها در محیطهای IT که بسیار پیچیده هستند و اغلب نیاز به مقیاس خیلی سریع دارند اهمیت بسیاری پیدا کرده است. در این محیط اگر مدیران سیستم و توسعهدهندگان مجبور باشند همه کارها را به صورت دستی انجام دهند، نمیتوانند با همه امور هماهنگ و منطبق شوند. اتوماسیون وظایف پیچیده را سادهتر میکند، نه تنها مشغلههای توسعهدهندگان را قابل مدیریتتر میکند، بلکه به آنها اجازه میدهد تا توجه خود را بر سایر وظایفی که برای سازمان ارزش بیشتری میآفرینند، متمرکز کنند. به عبارت دیگر، ابزار اتوماسیون زمان را آزاد میکند و کارایی را افزایش میدهد. Ansible، همانطور که در بالا ذکر شد، به سرعت در حال شکوفایی در دنیای ابزارهای اتوماسیون است. در ادامه به برخی از دلایل محبوبیت Ansible اشاره میکنیم.
مزایای Ansible
- رایگان بودن: Ansible یک ابزار متن باز است.
- راهاندازی و استفاده بسیار ساده: برای استفاده از شیوهنامههای Ansible نیازی به مهارتهای کدنویسی خاصی نیست.
- قدرتمند: Ansible به شما امکان میدهد حتی گردشهای کاری بسیار پیچیده IT را مدلسازی کنید.
- انعطافپذیر: میتوانید کل محیط برنامه را بدون توجه به جایی که مستقر شده است هماهنگ کنید. همچنین میتوانید آن را بر اساس نیاز خود سفارشی کنید.
- بدون نیاز به نصب: شما نیازی به نصب هیچ نرم افزار یا پورت فایروال دیگری بر روی سیستمهای مشتری که میخواهید خودکار کنید ندارید. همچنین لازم نیست یک ساختار مدیریت جداگانه ایجاد کنید.
- کارآمدی: از آنجایی که نیازی به نصب نرم افزار اضافی ندارید، فضای بیشتری برای منابع برنامه در سرور شما وجود دارد.
ویژگیهای Ansible
۱) مدیریت پیکربندی
Ansible برای مدیریت پیکربندی به صورتی بسیار ساده، قابل اعتماد و سازگار طراحی شده است. اگر در حال حاضر مشغول فعالیت در حوزه فناوری اطلاعات هستید، میتوانید خیلی سریع با آن دست به کار شوید. پیکربندیهای Ansible توصیف دادههای ساده زیرساخت هستند و هم توسط انسان قابل خواندن و هم توسط ماشینها قابل تجزیه هستند. تنها چیزی که برای شروع مدیریت سیستمها نیاز دارید یک رمز عبور یا یک کلید SSH است. مثالی از اینکه Ansible چگونه مدیریت پیکربندی را آسان میکند: اگر میخواهید یک نسخه بهروز شده از نوع خاصی از نرم افزار را بر روی همه ماشینهای موجود در شرکت خود نصب کنید، کافی است تمام آدرسهای IP گرهها را بنویسید (همچنین به نام میزبانهای راه دور) و یک شیوهنامه Ansible بنویسید تا آن را روی همه گرهها نصب کند، سپس شیوهنامه را از ماشین کنترل کننده خود اجرا کنید.
۲) استقرار برنامه
Ansible به شما امکان میدهد به سرعت و به راحتی برنامههای چند لایه را اجرا کنید. برای خودکارسازی سیستمهای خود نیازی به نوشتن کد سفارشی نخواهید داشت. شما کارهایی را که باید با نوشتن یک شیوهنامه انجام شوند فهرست میکنید و Ansible چگونگی رسیدن سیستمها را به وضعیتی که میخواهید، فهرست میکند. هنگامی که یک شیوهنامه را از دستگاه کنترل کننده خود اجرا میکنید، Ansible از SSH برای برقراری ارتباط با میزبانهای راه دور و اجرای تمام دستورات (وظایف) استفاده میکند.
۳) هماهنگسازی
همانطور که از نام آن پیداست، هماهنگسازی یا ارکستراسیون شامل آوردن عناصر مختلف به یک عملیات کلی زیبا است – مشابه روشی که یک رهبر موسیقی نتهای تولید شده توسط همه سازهای مختلف را به شکل یک اثر هنری منسجم در میآورد. به عنوان مثال، با استقرار برنامه، شما نه تنها باید سرویسهای فرانت اند و بک اند، بلکه پایگاههای داده، شبکهها، زیرساخت ذخیرهسازی و غیره را مدیریت کنید. همچنین باید مطمئن شوید که تمام وظایف به ترتیب مناسب انجام میشوند. Ansible از گردشهای کاری خودکار، تدارکات و موارد دیگر برای آسانتر کردن هماهنگی وظایف استفاده میکند. هنگامی که زیرساخت خود را با استفاده از شیوهنامههای Ansible تعریف کردید، به لطف قابل حمل بودن شیوهنامههای Ansible، میتوانید از همان ارکستراسیون هر کجا که نیاز دارید استفاده کنید.
۴) امنیت و انطباق
مانند استقرار برنامه، سیاستهای امنیتی در سراسر سایت (مانند قوانین فایروال یا قفل کردن کاربران) را میتوان همراه با سایر فرآیندهای خودکار پیادهسازی کرد. اگر جزئیات امنیتی را روی دستگاه کنترل پیکربندی کنید و شیوهنامه مرتبط را اجرا کنید، همه میزبانهای راه دور به طور خودکار با آن جزئیات به روز میشوند. این بدان معناست که شما نیازی به نظارت دستی بر هر دستگاه برای رعایت امنیت ندارید. برای امنیت بیشتر، شناسه کاربری و رمز عبور مدیر به صورت متن ساده در Ansible قابل بازیابی نیست.
۵) تدارکات ابری
اولین گام در خودکارسازی چرخه عمر برنامههای کاربردی، خودکار کردن زیرساختهای شماست. با Ansible، میتوانید پلتفرمهای ابری، میزبانهای مجازی، دستگاههای شبکه و سرورهای bare metal را فراهم کنید.
معماری Ansible
حالا بیایید کمی در مورد قطعاتی که محیط Ansible را تشکیل میدهند صحبت کنیم.
۱) ماژولها
ماژولها مانند برنامههای کوچکی هستند که Ansible آنها را از یک دستگاه کنترل کننده به تمام گرهها یا میزبانهای راه دور منتقل میکند. ماژولها با استفاده از شیوهنامهها اجرا میشوند و مواردی مانند خدمات، بستهها و فایلها را کنترل میکنند. Ansible همه ماژولها را برای نصب بهروزرسانیها یا هر کاری که لازم است اجرا میکند و پس از اتمام آن را حذف میکند. Ansible بیش از ۴۵۰ ماژول برای کارهای روزمره ارائه میدهد.
۲) پلاگینها
همانطور که احتمالا از بسیاری از ابزارها و پلتفرمهای دیگر میدانید، پلاگینها یا افزونهها تکههای کد اضافی هستند که عملکرد را افزایش میدهند. Ansible با تعدادی از پلاگینهای خود ارائه میشود، اما شما میتوانید افزونههای خود را نیز بنویسید. پلاگینهای Action، Cache و Cache Back سه نمونه هستند.
۳) موجودیها
تمام دستگاههایی که با Ansible استفاده میکنید (دستگاه کنترل به علاوه گرهها) در یک فایل ساده به همراه آدرسهای IP، پایگاههای داده، سرورها و غیره فهرست شدهاند. پس از ثبت موجودی، میتوانید با استفاده از یک فایل متنی ساده، متغیرهایی را به هر یک از میزبانها اختصاص دهید. شما همچنین میتوانید موجودی را از منابعی مانند EC2 (Amazon Elastic Compute Cloud) تهیه کنید.
۴) شیوهنامهها
شیوهنامههای Ansible مانند کتابچه راهنمای کارها هستند. آنها فایلهای سادهای هستند که با YAML نوشته شدهاند، که مخفف YAML Ain’t Markup Language، یک زبان سریال سازی دادهها و قابل خواندن توسط انسان است. شیوهنامهها قلب چیزی هستند که Ansible را بسیار محبوب کرده است، زیرا آنها وظایفی را که باید به سرعت و بدون نیاز به دانستن یا به خاطر سپردن نحو خاصی توسط کاربر انجام شود، توصیف میکنند. آنها نه تنها میتوانند پیکربندیها را اعلام کنند، بلکه میتوانند مراحل هر کار سفارشی دستی را هماهنگ کنند و میتوانند وظایف را همزمان یا در زمانهای مختلف اجرا کنند.
هر شیوهنامه از یک یا چند بخش تشکیل شده است و هدف یک بخش ترسیم گروهی از میزبانها به نقشهای کاملا تعریف شده است که توسط وظایف نمایش داده میشود.
۵) APIها
APIهای مختلفی (واسطهای برنامه نویسی) در دسترس هستند، بنابراین میتوانید انواع اتصال Ansible (به معنای چیزی بیش از SSH برای نقل و انتقال)، برگشت به تماس و موارد دیگر را گسترش دهید.
Ansible Tower چیست؟
Ansible Tower راه حل تجاری مبتنی بر وب Red Hat برای مدیریت Ansible است. شناخته شدهترین ویژگی آن یک رابط کاربری آسان برای مدیریت تنظیمات و استقرار است که نسبت به رابط کاربری اصلی پیشرفت قابل توجهی دارد. Ansible Tower شامل ویژگیهای ضروری Ansible است، بهویژه آنهایی که بهجای قالبهای متنی، در قالب گرافیکی راحتتر دیده میشوند. این راه حل برای حداکثر ۱۰ گره رایگان است.
مزایای استفاده از Ansible با Docker
Ansible عملکرد بسیار خوبی در خودکارسازی Docker و عملیاتی کردن فرآیند ساخت و استقرار کانتینرها انجام میدهد. برای مثال، اگر یک سیستم IT سنتی را مدیریت میکنید، اضافه کردن قابلیتهای کانتینر-ابزار سخت است. اما Ansible نیاز به انجام فرآیندها به صورت دستی را برطرف میکند. چهار مزیت اصلی در استفاده از Ansible با Docker وجود دارد:
۱) قابل حمل/انعطاف پذیری
این واقعیت که شیوهنامههای Ansible قابل حمل هستند، به این معنی که میتوان از آنها در هر مکانی استفاده کرد و همچنین قابل تکرار است، میتواند در زمان و فعالیت شما صرفهجویی کند. برای مثال، اگر از یک Dockerfile خالص برای ساخت یک کانتینر استفاده میکنید، میتوانید برنامه را فقط در یک کانتینر Docker بازتولید کنید. از طرف دیگر، اگر از یک شیوهنامه Ansible برای ایجاد یک کانتینر استفاده میکنید، میتوانید برنامه را در Docker، در فضای ابری و غیره بازتولید کنید.
۲) قابلیت حسابرسی
حتی اگر کانتینرهایی ایجاد کنید، همچنان باید کدها را رصد کرده و آسیبپذیریها را ردیابی کنید. با استفاده از Ansible با Docker، میتوانید به راحتی ردیابی کنید که چه کسانی کدام کانتینرها را مستقر کردهاند و همچنین آنچه در همه کانتینرها وجود دارد را تحت نظر داشته باشید و بدانید که میتوانید هر کانتینری را در صورت لزوم بازسازی کنید.
۳) مدیریت کل محیطها
با Ansible، از قبل میدانید که میتوانید کانتینرهای Docker خود را مدیریت کنید. اما میتوانید محیطی را که همه کانتینرها در آن قرار دارند، حتی در محیطهای بسیار پیچیده، مدیریت کنید. Ansible میتواند کانتیر و غیر کانتینر را به طور همزمان نظارت کند، که ضروری است زیرا برنامههای کاربردی کانتینری اغلب نیاز به تعامل با برنامههای غیر کانتینری دارند.
۴) Syntax مشابه
همانطور که گفته شد، Ansible از فایلهای YAML برای شیوهنامههای خود استفاده میکند. Docker از اسکریپتهای غیر YAML خود استفاده میکند، اما آنها بسیار شبیه هستند و تقریبا میتوانند کارهای مشابهی را انجام دهند.
چگونه Ansible را با Docker استفاده کنیم
ابتدا بیایید در مورد اینکه Docker چیست صحبت کنیم. Docker یک پلتفرم متن باز مبتنی بر لینوکس است که برای کمک به استقرار خودکار برنامهها در کانتینرهای نرم افزار استفاده میشود. (کانتینر واحدی از نرمافزار است که در آن کد و همه وابستگیهای آن با هم بستهبندی میشوند؛ راهاندازی نرمافزار به این روش به اجرای مطمئن و پیوسته برنامه در محیطهای محاسباتی متعدد کمک میکند.)
حالا بیایید بیشتر به استفاده از Ansible با Docker بپردازیم. همانطور که گفته شد، میتوانید از Ansible برای خودکارسازی Docker و ساخت و استقرار کانتینرهای Docker استفاده کنید. ابتدا باید Docker SDK برای پایتون را نصب کنید. پس از نصب ابزارها، آخرین Ansible rolebdd را بررسی کنید و سپس با استفاده از تکنیک سبز-آبی، استقرار را انجام دهید. تست کردن را فراموش نکنید! هر دو تست ادغام و فشار را اجرا کنید. در غیر این صورت، برنامه شما ممکن است به درستی اجرا نشود. مطمئن شوید که جدیدترین نسخه کانتینر را دارید، برنامه قدیمی را همزمان با برنامه جدید اجرا کنید، تستها را پس از استقرار اجرا کنید، اعلان آخرین نسخه را انجام دهید، پیکربندی را دوباره انجام دهید تا به نسخه جدید اشاره کند، و سپس در نهایت، نسخه قبلی (قدیمی) را متوقف کنید.
هنگامی که برنامه تمام تستها را گذراند و پیکربندی روی برنامه جدید تنظیم شد، زمان توضیح نحوه همکاری Ansible و Docker با یکدیگر است. ابتدا مطمئن شوید که Git، Vagrant و VirtualBox را نصب کردهاید. سپس یک فایل Vagrant ایجاد کنید که دارای ماشین مجازی اوبونتو است. سپس شیوهنامه Ansible خود را اجرا کنید – این همه چیز را نصب و پیکربندی میکند. سپس میتوانید برنامه خود را مستقر کنید. به یاد داشته باشید که برخی از مؤلفهها باید دانلود شوند، بنابراین ممکن است زمانی را که برای اولین بار برای استقرار صرف میکنید طولانیتر کند. تا اینجا به خوبی درک کردهایم که 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 فقط به نفع سازمان شما نخواهد بود. با توجه به Payscale، متوسط حقوق یک توسعه دهنده با مهارتهای Ansible حدود ۱۱۰۰۰۰ دلار در سال است و برخی از توسعه دهندگان حتی درآمد بیشتری دارند. به گفته دایس، Ansible پردرآمدترین مهارت DevOps است.
منبع