معرفی Ansible
من ارسلان میربزرگی، میخواهم در این مقاله اطلاعات کاملی را در مورد Ansible کاربردها، مزیت و معایب آن با شما و به زبان ساده و غیرتخصصی صحبت کنم. Ansible یک پلتفرم Open source و خودکار است. نصب آن بسیار ساده و در عین حال پلتفرمی قدرتمند است. Ansible میتواند برای Configuration Management، Application Deployment و Task Automation به شما کمک کند. همچنین برای مواردی که باید Task ها به ترتیب اجرا شده و زنجیرهای از Event ها در چندین سرور انجام شوند مورد استفاده قرار میگیرد. بهعنوان مثال اگر 4 سرور داشته باشیم و بخواهیم Nginx را برای همه نصب و کانفیگ کنیم، با استفاده از Ansible و فقط یکبار اجرای command مربوطه، nginx در هر 4 سرور نصب میشود. Ansible در دنیای ابزارهای خودکارسازی بهسرعت در حال پیشرفت است. در ادامه به بررسی برخی دلایل محبوبیت Ansible پرداخته خواهد شد.
مزایای استفاده از Ansible:
1) رایگان است: Ansible ابزاری Open source است.
2) تنظیم و استفاده از آن بسیار ساده است: برای استفاده از Ansible playbook (شامل اطلاعات سیستمهایی که باید مدیریت شوند، همچنین دستورالعملها و مراحلی که باید اجرا شوند)، نیازی به داشتن مهارتهای خاص برنامهنویسی نیست.
3) قدرتمند است: با استفاده از Ansible، میتوانید workflow های پیچیدهی IT را نیز مدلسازی کنید.
4) انعطافپذیر است: کل محیط برنامه بدون در نظر گرفتن محل استقرار آن با کمک Ansible قابل تنظیم است. همچنین میتوانید بر اساس نیاز خود آن را شخصیسازی کنید.
5) Agentless است: برای خودکار سازی، نیازی به نصب هیچ نرمافزار یا پورت فایروال دیگری نیست و همچنین نیازی به نصب یک ساختار مدیریت جداگانه ندارد.
6) کارآمد است: با توجه به اینکه نیازی به نصب هیچ نرمافزار اضافهای نیست، فضای بیشتری برای منابع برنامه در سرور شما وجود دارد.
Ansible چهکارهایی میتواند انجام دهد؟
Configuration Management:
برای ساده شدن، قابل اعتماد و سازگار بودن Configuration Management، طراحی شده است. اگر با IT آشنایی داشته باشید، میتوانید خیلی سریع با آن سازگار شوید. Configuration Ansible، توصیف سادهای از دادههای زیرساخت است که هم توسط انسان قابل خواندن و هم توسط ماشین قابل تجزیه است. برای شروع مدیریت سیستم، فقط به یک رمز عبور یا کلید Secure Socket Shell یک پروتکل شبکه نیاز دارید. بهعنوان مثالی از آسان بودن Configuration Management توسط Ansible، فرض کنید میخواهید یک نسخهی بهروز شده از یک نرمافزار را، بر روی تمام دستگاههای شرکت خود نصب کنید، برای این کار فقط باید تمام آدرسهای IP گرهها (میزبانهای راه دور) را داشته باشید و در نهایت با نوشتن یک playbook و اجرای آن از دستگاه خود، نرمافزار را در همهی دستگاهها نصب کنید.
Orchestration:
همانطور که یک ارکستر موسیقی، نتهای تولید شده توسط همهی سازهای مختلف را به یک کار منسجم هنری تبدیل میکند، ارکستراسیون نیز وظیفهی منسجم کردن عناصر مختلف، بهمنظور ایجاد یک عملیات خوب و کامل را بر عهده دارد. بهعنوان مثال، با استقرار برنامه، علاوه بر سرویسهای front-end، backend، بانکهای اطلاعاتی، شبکهها و مکانهای ذخیرهسازی و غیره نیز، باید مدیریت شوند. همچنین باید اطمینان حاصل شود که همه Task ها به ترتیب انجام میشوند. Ansible، با استفاده از مواردی چون Automated Workflows و Provisioning، کارهای Orchestrating را آسان میکند. همچنین به لطف Portable بودن Ansible playbook، هنگامی که زیرساخت خود را با استفاده از playbook ها تعریف کرده باشید، میتوانید در هرجایی که نیاز باشد، دوباره از همان ارکستراسیون استفاده کنید.
Application Deployment:
وقتی برنامهای با Ansible تعریف شده و استقرار آن توسط Ansible Tower (همان Ansible در سطح سازمانی و مبتنی بر وب، برای مدیریت سازمان با یک رابط کاربری که داشبوردی را با خلاصه وضعیت همه میزبانها فراهم میکند) مدیریت میشود، سرورها میتوانند بهطور مؤثر، کل چرخهی تولید برنامه یعنی از توسعه تا تولید را مدیریت کنند. برای خودکارسازی سیستمها نیازی به نوشتن کد نیست. فقط کافی است با نوشتن یک Playbook، Task های که باید انجام شوند را لیست کنید، سپس Ansible میفهمد که چگونه سیستم را به وضعیت مورد نظر شما برساند؛ به عبارت دیگر، نیازی به Config دستی برنامهها در هر دستگاه بهصورت جداگانه نیست. هنگامیکه از سیستم اصلی (سیستم ناظر) یک Playbook اجرا میشود، Ansible برای برقراری ارتباط با میزبانهای راه دور و اجرای همه دستورات (Task) از SSH استفاده میکند.
Provisioning:
اولین مرحله در خودکارسازی چرخهی برنامهها، خودکار کردن Provisioning یا پشتیبانی زیرساختهای برنامه است. با کمک Ansible، میتوان از پلتفرمهای ابری، میزبانهای مجازی، دستگاههای شبکه و سرورهای Bare-metal (یک سیستم کامپیوتری یا شبکه است که در آن یک ماشین مجازی بهجای اینکه در سیستمعامل میزبان (OS) باشد، مستقیماً روی سختافزار نصب میشود) پشتیبانی کرد.
Security:
وقتی Security Policy در Ansible تعریف شود، بررسی و بهبود Security Policy سایت، میتواند در سایر فرایندهای خودکار ادغام شود. همچنین در تمام توسعههای آتی نیز، همراه توسعه خواهد بود. این یعنی، شما یکبار جزئیات امنیتی خود را در سیستم اصلی Config میکنید و این تنظیمات بهطور خودکار در تمام سیستمهای دیگر اعمال میشود. علاوه بر این، تمام اطلاعات کاربری مدیران (شناسه و رمز ورود) که در Ansible ذخیره شده است. لازمبه ذکر است توسط هیچ کاربری در Plain text قابل بازیابی نیست.
معماری:
همانطور که در نمودار بالا مشاهده میکنید، موتور خودکارسازی Ansible، با کاربرانی که برای اجرای آن، Playbook مینویسند ارتباط مستقیمی دارد. همچنین با سرویسهای ابری و پایگاه داده مدیریت مدیریت (CMDB) نیز تعامل دارد.
معماری خودکارسازی شامل موارد زیر است:
فهرست موجودی:
فهرستی از میزبانها (سیستمها) به همراه آدرس IP آنها، سرورها، پایگاه داده و غیره است که باید مدیریت شوند. سپس Ansible از طریق یک پروتکل ارتباطی مانند SSH برای UNIX، Linux یا Networking و WinRM برای سیستم Windows، ارتباط را آغاز میکند.
API:
رابط برنامهنویسی در Ansible که بهعنوان بستر ارتباطی، برای سرویسهای Cloud، سرویسهای عمومی یا خصوصی استفاده میشود.
ماژولها:
ماژولها از طریق Playbook ها، بهطور مستقیم بر روی میزبانهای راه دور اجرا میشوند. همچنین میتوانند منابع سیستم مثل سرویسها، Package ها یا فایلها را کنترل کرده و دستورات سیستم را اجرا کنند. این موارد با انجام اقدامات لازم بر روی فایلهای سیستم، نصب Package ها یا برقراری ارتباط API با سرویسهای شبکه انجام میشوند.
پلاگین ها:
پلاگینها، به Task های Ansible این امکان را میدهد که بهعنوان مرحلهای از ساخت برنامه اجرا شوند. پلاگینها، قطعه کدهایی هستند که عملکرد اصلی Ansible را افزایش میدهند. Ansible، شامل تعدادی پلاگین سودمند است و شما نیز، بهراحتی میتوانید پلاگین موردنیاز خود را بنویسید. بهعنوان مثال، پلاگینهای Action، قبل از ماژولها هستند و میتوانند قبل از فراخوانی ماژولها، Task ها را روی سیستم اصلی اجرا کنند. پلاگینهای Cache نیز، برای نگهداری حافظهی پنهان «Facts» استفاده میشوند تا از انجام عملیاتی پرهزینه جلوگیری شود.
غیر از موارد ذکرشده، چند توضیح دیگر در معماری Ansible وجود دارد که در ادامه به بررسی آنها میپردازیم:
Networking:
میتوان از Ansible برای خودکارسازی شبکههای مختلف استفاده کرد. Ansible برای انجام خودکارسازی و توسعه از همان Framework ساده و قدرتمند فناوری اطلاعات استفاده میکند. برای این کار از یک Data Model (مثلا یک Playbook یا Role) مجزا از این موتور خودکارسازی استفاده میشود. همچنین میتواند بهراحتی، سختافزارهای مختلف شبکه را پوشش میدهد.
میزبانها:
میزبانها در معماری Ansible سیستمهایی هستند که توسط Ansible خودکارسازی میشوند. شامل هر نوع دستگاهی مثل ویندوز، لینوکس، RedHat و غیره میشوند.
Playbook ها:
فایلهای ساده با فرمت YAML هستند که مسئولیت توصیف وظایفی که باید توسط Ansible اجرا شوند را بر عهده دارند. آنها میتوانند Config ها و همچنین مراحل دستی را شناسایی کنند. Playbook ها توانایی انجام Task ها، بهصورت همگام یا ناهمگام را دارند.
CMDB:
مخزنی است که بهعنوان انبار داده برای نصبهای IT عمل میکند. دادههای مربوط به مجموعهای از منابع فناوری اطلاعات (که معمولاً بهعنوان بخشهای (CI) شناخته میشوند) و همچنین توصیف روابط بین این منابع، در آن نگهداری میشوند.
Cloud:
شبکهای در اینترنت برای سرورهای میزبان راه دور است که بهجای سرور Local، برای ذخیره، مدیریت و پردازش دادهها استفاده میشود. به کمک آن میتوانید منابع و نمونههای خود را روی cloud راهاندازی کرده و به سرورهای خود متصل شوید.
و در آخر
Ansible، یک موتور IT خودکارسازی کاملاً ساده است که Configuration Management،Application Deployment، Orchestration درون سرویس و بسیاری دیگر از نیازهای IT را خودکار میکند. با توجه به اینکه از زیرساختهای امنیتی اضافی استفاده نمیکند، نصب و Config آن آسان است. مهمتر از همه، از زبانی بسیار ساده (YAML، برای Ansible Playbooks) استفاده میکند. با کمک آن میتوانید مراحل خودکارسازی را به زبان انگلیسی ساده تعریف کنید.وبسایت میربزرگی قصد دارد تا با ارائه مقالهها و تجربههای کاربردی شما را در زمینه یادگیری و رفع اشکالاتتان کمک کند. در صورت وجود هرگونه سوالی به من ایمیل بزنید.