امروزه واژه پرکاربرد اتوماسیون در فناوری اطلاعات زیاد دیده می شود که معنی آن تبدیل یک سری کارهای تکراری که طبق یک روال دستی انجام می شود به صورت خودکار و اتومات.
این عمل در بخش های مختلف حوزه فناوری به همین صورت است. مثلاً مدیر یک شبکه که از نصب نرم افزارهای جانبی بر روی سیستم عامل سرورها یا پیکربندی هایی که شاید همیشه با آن سرکار دارد و از تکرار این فرآیندها در چندین سرور مختلف خسته می شود با اتوماسیون کردن کارها دیگر دغدغه ای برای انجام کارهای تکراری نخواهد داشت.
اتوماسیون سازی با Ansible
انسیبل یک ابزار متن باز مدیریتی است که برای کنترل و پیکربندی خودکار فرآیندها در سرورها و کلاینت های لینوکسی و هماهنگ سازی وظایف به کار می رود. این ابزار در سال 2015 توسط شرکت Ansible Inc و تیم Ansible Workers به زبان برنامه نویسی پایتون طراحی و ساخته شد و تحت مالکیت Redhat قرار گرفت.
در حال حاضر هرگونه استراتژی های پیاده شده و طرح ریزی ها توسط Redhat انجام می شود.
هرچه تعداد و تنوع سیستم ها بیشتر شود.مدیریت و کنترل node ها در ansible پیچیده تر می شود. اگر با ansible آشنا باشید منطقی است که باید task ها را با هم در playbook انسیبل تعریف کنیم. با استفاده از playbook ، دیگر نیازی به اجرای بسیاری از کارهای جداگانه روی سیستم های از راه دور نیست ، در عوض به شما امکان می دهد تمام محیط ها را همزمان با یک فایل پیکربندی کنید.
با این حال ، playbook ها هم میتوانند به مرور پیچیده و سخت شوند هنگامی که سیستم های متفاوت با task های مختلف تعریف شوند، Ansible به شما این امکان را می دهد وظایف را در یک ساختار دایرکتوری به نام Role سازماندهی کنید. در این پیکربندی ، playbook ها به جای وظایف ، role ها را فراخوانی می کنند ، بنابراین می توانید وظایف را با هم گروه بندی کنید و سپس از role ها در سایر playbook ها دوباره استفاده کنید.
role ها همچنین به شما امکان می دهند الگوها ، پرونده های ثابت و متغیرها را به همراه وظایف خود در یک قالب جمع آوری کنید.
بگذارید این را با یک مثال توضیح دهم. فرض کنید شما می خواهید playbook ای را ایجاد کنید که 10 وظیفه مختلف را بر روی 5 سیستم مختلف انجام دهد ، آیا برای این کار از یک playbook استفاده می کنید؟ خیر ، استفاده از یک playbook گیج کننده و مستعد اشتباه است. در عوض ، می توانید 10 نقش مختلف ایجاد کنید ، جایی که هر نقش یک وظیفه را انجام دهد. سپس ، تنها کاری که شما باید انجام دهید این است که نام نقش را در داخل playbook ذکر کنید تا آنها را فراخوانی کنید.
• اتوماسیون یا Automation چیست؟
امروزه واژه پرکاربرد اتوماسیون در فناوری اطلاعات زیاد دیده می شود که معنی آن تبدیل یک سری کارهای تکراری که طبق یک روال دستی انجام می شود به شکل خودکار و اتومات.
این عمل در بخش های مختلف حوزه فناوری به همین صورت است. مثلاً مدیر یک شبکه که از نصب نرم افزارهای جانبی بر روی سیستم عامل سرورها یا پیکربندی هایی که همیشه با آن سرکار دارد و از تکرار این فرآیندها در چندین سرور مختلف خسته شود با اتوماسیون کردن کارها دیگر دغدغه ای برای انجام کارهای تکراری نخواهد داشت.
• معرفی ابزارهای اتوماسیون
می دانیم که نرم افزارها و یا ابزارهای مختلفی برای انجام یک کار خاص و یا تعریف شده استفاده می شود. مثلاً برای برنامه نویسی از زبان های مختلفی مثل PHP ,Perl ,Python ,Java Script و … استفاده می شود.
یا برای ایجاد وب سرور از برنامه های Xampp-Nginx-IIS-Apache و یا برای کنترل و مدیریت هاست های اشتراکی از Cpanel ,Direct Admin, Plask استفاده می شود.
ازابزارهای Puppet, Chef و Ansible نیز برای پیاده سازی عملیات فرآیند اتوماسیون یا اتوماتیک کردن Taskها استفاده می شود.
البته ابزارهای مختلفی برای این کار وجود دارد که ما سه تا از معروفترین های آن را معرفی کردیم.
با مقایسه این سه ابزار از لحاظ عملکرد و نحوه کار با آنها ، نتیجه ای که حاصل می شود استفاده از انسیبل به دلیل کارایی و یادگیری آسان گزینه ای مناسب برای اتوماسیون کردن سیستم های لینوکسی می باشد.
ansible role ها مستقل از یکدیگر می باشند و اجرای هر role وابسته به دیگر role ها نمی باشد لذا شما می توانید طبق خواسته و نیازتان role ها را هر زمان تغییر و شخصی سازی کنید. این کار وظیفه ما را برای نوشتن مجدد یک بخش کامل از کد که هر بار به آن نیاز داریم کاهش می دهد ، در نتیجه کار ما ساده تر می شود.
برای مثال شما برای تنظیم LAMP stack باید یک playbook بنویسید و 4 نقش ایجاد کنید اگر playbook دیگری برای تنظیم LAMP stack و همچنین نصب وردپرس بخواهید ، آیا دوباره role های جدیدی برای LAMP stack و WordPress ایجاد خواهید کرد؟
خیر شما می توانید به سادگی از role های قدیمی (که برای LAMP stack ایجاد کردید) دوباره استفاده کنید و علاوه بر این role جدیدی را برای وردپرس ایجاد کنید.