مقدمه ای بر مدیریت پیکربندی با Ansible

مدیریت پیکربندی فرایندی است برای مدیریت تغییرات در یک سیستم به شکلی که از یکپارچگی در طول زمان اطمینان حاصل کند ، و به طور معمول شامل ابزار و فرآیندهایی است که اتوماسیون و قابلیت مشاهده را تسهیل می کند. حتی اگر این مفهوم از صنعت IT سرچشمه نگرفته باشد ، این اصطلاح به طور گسترده ای برای اشاره به مدیریت پیکربندی سرور مجازی ها به کار می رود.در زمینه سرور مجازی ها ، مدیریت پیکربندی معمولاً به IT Automation یا Server Orchestration نیز شناخته می شود. هر دو عبارت جنبه های عملی مدیریت پیکربندی و توانایی کنترل چندین سیستم از یک سرور مجازی مرکزی را تاکید می کنند.این راهنما شما را با مزایای استفاده از یک ابزار مدیریت پیکربندی برای اتوماسیون تنظیم زیرساخت سرور مجازی تان، آشنا می کند و اینکه چگونه یک ابزار از جمله Ansible می تواند در این زمینه به شما کمک کند.مزایای استفاده از یک ابزار مدیریت پیکربندیابزارهای مدیریت پیکربندی متعددی در بازار وجود دارند که سطح پیچیدگی و سبک های معماری متنوعی دارند. اگرچه هر یک از این ابزارها ویژگی های خاص خود را دارند و به روش های کمی متفاوت کار می کنند ، همه آنها عملکرد مشابهی را ارائه می دهند: اطمینان حاصل کنید که وضعیت سیستم مطابق با وضعیت توصیف شده توسط مجموعه ای از اسکریپت های آماده سازی میباشد.بسیاری از مزایای مدیریت پیکربندی برای سرور مجازی ها از توانایی تعریف زیرساخت های شما به صورت کد نشات می گیرد. این سیستم به شما امکان می دهد:از یک سیستم کنترل نسخه برای پیگیری هرگونه تغییر در زیرساخت های خود استفاده کنیداز تهیه اسکریپت برای چندین سرور مجازی محیط مانند توسعه ، آزمایش و تولید، استفاده مجدد کنیداسکریپت های آماده سازی بین همکاران را برای سهولت همکاری در یک محیط توسعه استاندارد به اشتراک بگذاریدروند تکثیر سرور مجازی ها را ساده تر کنید ، و این باعث می شود تا بازیابی از خطاهای مهم تسهیل شودعلاوه بر این ، ابزارهای مدیریت پیکربندی راهی برای کنترل یک تا صدها سرور مجازی از یک مکان متمرکز را به شما ارائه می دهند که می تواند به طور چشمگیری بهره وری و یکپارچگی زیرساختهای سرور مجازی شما را بهبود ببخشد.بررسی اجمالیAnsible ابزاری برای مدیریت پیکربندی مدرن است که وظیفه تنظیم و نگهداری سرور مجازی های از راه دور را تسهیل می کند ، با یک طراحی مینیمالیستی که برای به روزرسانی و اجرای سریع کاربران در نظر گرفته شده است.کاربران ، اسکریپت های تهیه Ansible را در YAML می نویسند ، یک استاندارد سریال سازی داده های کاربر پسند که به هیچ زبان برنامه نویسی خاصی ربط ندارد. این به کاربران امکان می دهد در مقایسه با ابزارهای مشابه در همان دسته ، اسکریپت های تخصصی را بطور شهودی تر ایجاد کنند.Ansible نیازی به نصب نرم افزار خاصی روی گره هایی که با این ابزار مدیریت می شوند، ندارد. یک دستگاه کنترل با نرم افزار Ansible راه اندازی میشود که سپس از طریق SSH استاندارد با گره ها ارتباط برقرار می کند.Ansible به عنوان یک ابزار مدیریت پیکربندی و چارچوب اتوماسیون ، کلیه ویژگیهای رایج موجود در سایر ابزارهای همان گروه را ضبط می کند ، در حالی که هنوز تمرکز زیادی روی سادگی و عملکرد دارد:رفتار IdempotentAnsible وضعیت منابع موجود در سیستم های مدیریت شده را برای جلوگیری از تکرار کارهایی که قبلاً انجام شده بودند ، پیگیری می کند. اگر بسته ای از قبل نصب شده باشد ، دیگر آن را نصب نمیکند. هدف این است که بعد از اجرای هر مرحله ، سیستم به حالت مورد نظر برسد (یا آن را حفظ کند) حتی اگر چندین بار آن را اجرا کنید. این همان چیزی است که Ansible و سایر ابزارهای مدیریت پیکربندی را به خاطر داشتن یک رفتار Idempotent متمایز می کند. هنگام اجرای یک playbook ، وضعیت هر کاری را که باید اجرا شود مشاهده می کنید و اینکه آیا این کار باعث تغییر در سیستم شده است یا خیر.پشتیبانی از متغیرها ، شرط ها و حلقه هاهنگام نوشتن اسکریپت های اتوماسیون Ansible ، می توانید از متغیرها ، شرط ها و حلقه ها استفاده کنید تا اتوماسیون خود را متنوع تر و کارامدتر کنید.حقایق سیستمAnsible مجموعه ای از اطلاعات دقیق در مورد گره های مدیریت شده ، مانند رابط های شبکه و سیستم عامل را جمع آوری کرده و آن را به عنوان متغیرهای جهانی به نام واقعیت های سیستم ارائه می دهد. از واقعیت ها می توان در playbook ها استفاده کرد تا اتوماسیون شما متنوع تر و سازگارتر شود ، و بسته به سیستم مجهز شده ، متفاوت رفتار کند.سیستم قالب بندیAnsible از سیستم قالب بندی Jinja2 Python استفاده می کند تا امکان عبارات پویا و دسترسی به متغیرها را فراهم کند. از الگوهای می توان برای تسهیل تنظیم فایل ها و خدمات پیکربندی استفاده کرد. به عنوان مثال ، می توانید از یک الگو برای تنظیم یک میزبان مجازی جدید در Apache استفاده کنید ، در حالی که از همان قالب برای نصب چندین سرور مجازی استفاده می کنید.پشتیبانی از افزونه ها و ماژول هاAnsible با صدها ماژول داخلی برای تسهیل اتوماسیون نوشتن جهت کارهای اجرایی رایج سیستمها ، مانند نصب بسته هایی با apt و همزمان سازی فایل ها با rsync ، و همچنین برای کار با نرم افزارهای رایج مانند سیستم های پایگاه داده (مانند MySQL ، PostgreSQL ، MongoDB ، و غیره) و ابزارهای مدیریت متعلقات (PHP’s composer, Ruby’s gem, Node’s npm و غیره) همراه است. جدای از آن ، روش های مختلفی وجود دارد که می توانید Ansible را گسترش دهید: وقتی به عملکردی سفارشی احتیاج دارید که به طور پیش فرض وجود ندارد ، افزونه ها و ماژول ها گزینه های خوبی هستند.همچنین می توانید ماژول ها و افزونه های شخص ثالث را در پرتال Ansible Galaxy پیدا کنید.آشنایی با مفاهیم Ansibleاکنون به اصطلاحات و مفاهیم Ansible نگاهی خواهیم داشت تا به شما در آشنایی با این اصطلاحات در طول مجموعه مقاله ها کمک کنیم.Control Node (گره کنترل)گره کنترل سیستمی است که Ansible برای اتصال به سرور مجازی شما نصب و تنظیم شده است. شما می توانید چندین گره کنترل داشته باشید ، و هر سیستم قادر به اجرای Ansible می تواند به عنوان یک گره کنترل از جمله رایانه های شخصی یا لپ تاپ هایی که دارای سیستم عامل مبتنی بر لینوکس یا یونیکس هستند ، تنظیم شود. در حال حاضر ، Ansible در هاست های ویندوز قابل نصب نیست ، اما می توانید با تنظیم یک ماشین مجازی که لینوکس را اجرا کرده و از آنجا Ansible را اجرا میکند ، این محدودیت را دور بزنید.Managed Nodes (گره های مدیریت شده)سیستمهایی که با استفاده از Ansible کنترل می کنید گره های مدیریت شده نامیده می شوند. Ansible نیاز دارد گره های مدیریت شده از طریق SSH قابل دستیابی باشند ، و پایتون 2 (نسخه 2.6 یا بالاتر) یا پایتون 3 (نسخه 3.5 یا بالاتر) نصب شده باشد.Ansible انواع مختلفی از سیستم عامل ها از جمله سرور مجازی های ویندوز را به عنوان گره های مدیریت شده پشتیبانی می کند.Inventoryفایل Inventory (موجودی ) شامل لیستی از هاست هایی است که شما با استفاده از Ansible مدیریت خواهید کرد. گرچه Ansible به طور معمول هنگام نصب یک فایل Inventory پیش فرض ایجاد می کند ، می توانید از Inventory های هر پروژه استفاده کنید تا از زیرساختهای خود تفکیک بهتری داشته باشید و از اجرای دستورات یا Playbook ها روی سرور مجازی اشتباه جلوگیری کنید. موجودی های استاتیک معمولاً به صورت فایلهای .ini ایجاد می شوند ، اما شما می توانید از موجودی هایی که به صورت پویا تولید شده نیز به هر زبان برنامه نویسی که قادر به بازگشت JSON است ، استفاده کنید.Tasksدر Ansible ، یک Task (کار) ، واحد مجزایی از کار برای اجرای یک گره مدیریت شده است. هر عملی برای انجام به عنوان یک Task تعریف می شود. کارها می توانند به عنوان یک عمل یک طرفه از طریق دستورات ad-hoc اجرا شوند ، یا در یک Playbook به عنوان بخشی از یک اسکریپت اتوماسیون گنجانده شوند.PlaybookPlaybook شامل لیست سفارشی از وظایف و چند دستورالعمل دیگر است تا مشخص کند کدام هاست ها هدف آن اتوماسیون باشند ، آیا از سیستم افزایش امتیاز برای اجرای آن کارها استفاده شود، و بخش های اختیاری برای تعریف متغیرها یا مشمولیت فایل ها دارد. Ansible وظایف را به صورت متوالی انجام می دهد و یک اجرای کامل Playbook را یک play می نامند. Playbook ها با فرمت YAML نوشته میشوند.Handlersبرای دستیابی به اقدامات روی یک سرویس ، مانند راه اندازی مجدد یا متوقف کردن سرویسی که به طور فعال در سیستم گره مدیریت شده اجرا می شود ، از Handler استفاده می شود. Handler ها معمولاً توسط taksها تحریک می شوند و پس از اتمام همه کارها ، اجرای آنها در پایان یک play اتفاق می افتد. به این ترتیب ، اگر بیش از یک کار سرویس را ریستارت کند ، سرویس فقط یک بار و پس از انجام همه کارها ریستارت میشود. اگرچه رفتار پیش فرض Handler کارآمدتر است و در کل یک عمل بهتر میباشد ، اما در صورت نیاز توسط یک کار نیز می توان مجبور به اجرای سریع آن شد.Rolesrole ، مجموعه ای از Playbook و فایل های مرتبط است که به یک ساختار از پیش تعریف شده توسط Ansible سازمان دهی شده است. role ها استفاده مجدد و بازگشت مجدد از Playbook ها را به بسته های قابل تقسیم اتوماسیون دانه ای برای اهداف خاص مانند نصب یک سرور مجازی وب ، نصب یک محیط PHP یا تنظیم سرور مجازی MySQL تسهیل می کند.نتیجهAnsible ابزاری برای اتوماسیون فناوری اطلاعات جزیی است که دارای منحنی یادگیری ملایم میباشد ، و تا حدودی به خاطر استفاده از YAML برای تهیه اسکریپت ها مفید میباشد. دارای تعداد زیادی ماژول داخلی است که می تواند برای کارهای انتزاعی مانند نصب بسته ها و کار با قالب ها استفاده شود. الزامات ساده زیرساختی و دستورات قابل دسترس آن می تواند مناسب کسانی باشد که مدیریت پیکربندی را شروع می کنند.در قسمت بعدی این مجموعه ، نحوه نصب و شروع کار با Ansible را در سرور مجازی Ubuntu 20.04 مشاهده خواهیم کرد.برچسب‌ها:Ansible, Idempotent, IT Automation, playbook, Server Orchestration, YAML