آشنایی با پلتفرم اتوماسیون انسیبل (Ansible) و کاربرد آن در DevOps
اتوماسیون یا automation فرآیندی است که نه تنها باعث سادهتر شدن کارهای پیچیده میشود، بلکه فعالیتهای توسعهدهندگان را قابل کنترلتر میسازد و علاوه بر این به آنها امکان میدهد تا توجه خود را به سایر کارهایی که تاکنون وقت انجام آنها را نداشتند، منعطف کنند. به عبارت دیگر، باعث آزادتر شدن زمان و افزایش کارایی میشود.
احتمالاً اگر در حوزه Devops کار بکنید، این روزها نام Ansible را زیاد شنیدهاید. پلتفرمی که کار اتوماسیون انجام میدهد و بسیاری از کارهای افراد شاغل در این بخش را به صورت اتوماتیک انجام میدهد. به خصوص که سازگاری بسیار خوبی با داکر دارد. Ansible به سرعت در حال بالا رفتن در لیست ابزارهای اتوماسیون دنیاست. در ادامه با اکتوبیت همراه باشید تا به بررسی بیشتر این پلتفرم محبوب دنیای IT بپردازیم.
فهرست مطالب
Ansible چیست؟
Ansible یک پلتفرم اتوماسیون IT منبع باز از ردهت (Red Hat) است که به زبان برنامه نویسی پایتون نوشته شده است. این پلتفرم، سازمانها را قادر میسازد تا بسیاری از فرآیندهای فناوری اطلاعات را که معمولاً به صورت دستی انجام میشوند، خودکار کند، از جمله تهیه، مدیریت پیکربندی، استقرار برنامه و هماهنگ سازی.
Ansible یک Remote Administration بسیار قوی با امکانات بسیارکارآمد است که حول محور Ansible Core ساخته شده است. این پلتفرم یک چارچوب بدون عامل برای ایجاد، آزمایش و مدیریت محتوای اتوماسیون فراهم می کند. انسیبل روشی منعطف و امن را برای خودکارسازی بسیاری از وظایف فناوری اطلاعات و فرآیندهای پیچیده در اختیار سازمانها قرار میدهد.
انسیبل بر پایه زبان پایتون ساخته شده است و از فرمت YAML که یک زبان پیکربندی ساده هست، استفاده میکند که این موضوع یادگیری آن را بسیار آسان میکند.
نحوه کار کردن Ansible
Ansible بهکمک ماژولهای موجود به مقصد نهایی و مورد نظر شما متصل شده و دستورات را اجرا میکند. ارتباط شکل گرفته بین Ansible و endpoint بهصورت پیشفرض با استفاده از پروتکل SSH انجام شده و دستورات نیز از همین طریق اجرا میشوند.
بهاین شکل هیچ نیازی به سرورهای اضافی، daemonها و یا دیتابیسها برای استفاده از Ansible و خودکارسازی فرایندها وجود ندارد و این موضوع یکی از نقاط قوت این پلتفرم میباشد.
احتمالاً اگر هر تعریفی که تاکنون خواندید، به جای اینکه بیشتر با انسیبل آشنا شوید، بیشتر گیج شدهاید که دقیقاً این پلتفرم چه کاری برای ما انجام میدهد. با یک مثال ساده سعی میکنیم یکی از وظایف آن را به شما با زبانی ساده شرح دهیم.
فرض کنید میخواهید یک نرم افزار را در کل سیستمهای شبکه سازمان خود نصب کنید. چقدر وقت میگیرد که تک تک به سراغ این سیستمها رفته و فرآیند نصب را انجام دهیم. همه ما میدانیم که وقت زیادی از ما بابت این موضوع تلف میشود. به خصوص در سازمانهایی که یک روز قانون میآید که فلان نرم افزار برای همه نصب شود و روز دیگر قانون پاک کردن آن میآید. اینها همه وقت و انرژی نیروی آی تی را به هدر برده و به او امکان این را نمیدهد که برای موضوعات مهمتر وقت بگذارد.
انسیبل این مشکل بالا را به راحتی برای شما حل میکند. اگر میخواهید یک نسخه بهروز شده از نوع خاصی از نرم افزار را روی همه ماشینهای سازمانی خود نصب کنید، تمام کاری که باید انجام دهید این است که تمام آدرسهای IP نودها را بنویسید، یک پلیبوک (playbook) انسیبل بنویسید، تا بتوانید آن را در همه نودها نصب کنید، سپس playbook را از دستگاه کنترل خود اجرا کنید.
به عنوان مثال، با استقرار برنامه، شما نه تنها سرویسهای front-end و backend، بلکه پایگاههای داده، شبکهها، ذخیره سازی و غیره را نیز میبایست مدیریت کنید. همچنین باید از این که همه وظایف به ترتیب مناسب انجام میشوند اطمینان حاصل کنید. نرم افزار انسیبل از گردش کار خودکار (automated workflows)، تامین (provisioning) و سایر موارد استفاده میکند تا کارهای مربوط به تنظیمات را آسان کند تا در نتیجه هنگامی که زیرساخت خود را با استفاده از playbook های انسیبل و به لطف قابلیت حمل (portability) آن، در هر کجا که بخواهید بتوانید از همان ارکستراسیون استفاده کنید.
Playbook چیست؟
با خواندن چند پاراگراف بالا احتمالاً عبارت Playbook برای شما غریب آمده است. منظور از playbook ها در ansible چیست؟
یک کار، کوچکترین واحد عملی است که میتوانید با استفاده از Playbook در Ansible آن را خودکار کنید. Playbookها معمولاً شامل مجموعهای از وظایف هستند که هدفی را دنبال میکنند، مانند راهاندازی یک وب سرور یا استقرار یک برنامه کاربردی در محیطهای راه دور. Ansible وظایف را به همان ترتیبی که در یک playbook تعریف شده است اجرا میکند.
Ansible به کاربران اجازه میدهد تا سرورها را به دو روش مختلف مدیریت کنند:
- از طریق دستورات موقت
- از طریق playbooks
Playbookها فایلهای YAML حاوی فهرستی از کارهای سفارش داده شده هستند که باید برای تکمیل یک کار یا رسیدن به یک هدف خاص، مانند راهاندازی یک محیط LEMP، روی یک سرور راه دور اجرا شوند. پلیبوکهای Ansible به شما امکان میدهند تا راهاندازی سرور و استقرار برنامه را کاملاً خودکار کنید.
ansible playbook مانند کتابچههای راهنما برای کارها و وظایف عمل میکنند. در واقع آنها فایلهای سادهای هستند که با فرمت YAML، که یک زبان مجموعهسازی شدهی دادههای قابل خواندن توسط انسان است، نوشته شدهاند. پلی بوکها موثرترین عامل در محبوبیت این پلتفرم هستند؛ چرا که آنها وظایفی را برای این که سریعاً انجام شوند تعریف میکنند؛ بدون اين كه کاربر نياز به دانستن يا به خاطر سپردن ترکیب خاصی داشته باشد.
هر ماژول در پلی بوک انسیبل یک کار خاص را انجام میدهد. هر ماژول حاوی متادیتا است که زمان و مکان اجرای یک کار و همچنین اینکه کدام کاربر آن را اجرا میکند را تعیین میکند.
پلتفرم Ansible بر روی چه سیستم عامل هایی نصب می شود؟
Ansible بر روی سیستم عامل های اوبونتو (Ubuntu)، دبیان (Debian)، سنت او اس (CentOS) و ردهت (Redhat) قابل نصب و استفاده است.
مزایای استفاده از Ansible
- به حداقل رساندن میزان مصرف منابع
- امنیت بالا
- رایگان بودن و دسترسی راحت به آن
- همهگیر بودن و در دسترس بودن فرومهای زیاد برای رفع مشکلات آن
- اعتماد پذیری بالا
- سادگی مراحل نصب و کار کردن با آن
- برای ارتباط با سایر دستگاهها، نیاز به نصب Agent ندارد
جمعبندی
Ansible یک ابزار مدیریت پیکربندی مدرن است که نیازی به استفاده از نرم افزار عامل در گرههای راه دور ندارد. در عوض، فقط از SSH و Python برای برقراری ارتباط و اجرای دستورات روی سرورهای مدیریت شده استفاده میکند.
پرسش و پاسخ
مزیت Ansible نسبت به chef و puppet در چیست؟
مزیت اصلی انسیبل در Agentless بودن آن است و قادر است بدون نصب Agent بر روی کلاینتها، و تنها از طریق ssh با آنها ارتباط بگیرد. این در حالی است که puppet و chef نیاز به نصب agent دارند. مزیت بعدی انسیبل در این است که از زبان پایتون و فرمت YAML استفاده میکند که کار با آن را بسیار ساده کرده است. در حالی که در دو پلتفرم دیگر از زبان Ruby استفاده شده است.
چرا Ansible در DevOps استفاده می شود؟
Ansible به خودکارسازی اجرای برنامههای تولید شده داخلی در برنامههای تولیدی شما کمک میکند تا DevOps را آسانتر کند. برای ارکستراسیون، اتوماسیون، پیکربندی و مدیریت زیرساختهای فناوری اطلاعات، Ansible محبوبترین ابزار DevOps است.
Ansible با کدام زبان برنامه نویسی نوشته شده است؟
Ansible ابزاری است که به زبان پایتون نوشته شده است و از زبان نشانه گذاری اعلامی YAML برای توصیف وضعیت دلخواه دستگاهها و پیکربندی استفاده میکند.