واگرانت سادگی را به محیط مجازی آورد

واگرانت چیست ؟

واگرانت از نام‌هایی است که اخیرا در بسیاری از گفتگوهای متخصصین حوزه تکنولوژی شنیده می‌شود. در این مقاله قصد داریم تا به بررسی این سیستم بپردازیم.

واگرانت چیست؟

واگرانت یک نرم‌افزار متن باز است که در سال 2010 توسط میشل هاشیموتو به زبان Ruby نوشته شده است. بسیاری از سیستم‌های مجازی‌سازی از رابط کاربری و دستورات مربوط به خود استفاده می‌نمایند. در واگرانت با افزودن یک لایه اضافه این امکان فراهم شده است تا با بهره‌گیری از ساختاری مشترک، فرآیندها ساده گردیده و امکان دریافت نسخه پشتیبانی، انجام تغییرات، به اشتراک‌گذاری و مدیریت تغییرات با سادگی بیشتر صورت پذیرد. روند کاری آسان و تمرکز بر خودکارسازی فرآیندها، کاهش زمان تنظیم محیط توسعه، افزایش توازن تولید و رفع مشکل “قابلیت استفاده بر روی یک دستگاه خاص” همه از جمله مزایایی است که واگرانت ایجاد نموده است.

چرا واگرانت؟

واگرانت فضای کاری‌ای را با توجه به استانداردهای روز فراهم آورده تا سادگی انجام تنظیمات، امکان استفاده مجدد و قابلیت جابجایی، در کنار یک فرآیند کاری ساده و یکپارچه به افزایش کارایی و انعطاف‌پذیری تیم‌ها منجر شود.

برای تحقق این کار، در واگرانت نرم‌افزار بر روی یک Provider از هر نوع مانند  VirtualBox, VMware و AWS قرار می‌گیرد. به طور پیش فرض استفاده از VirtualBox  در نظر گرفته شده است، که با توجه به رایگان بودن گزینه مناسبی برای بسیاری از مجموعه‌ها است. سپس واگرانت با استفاده از  ابزارهایی از قبیل Chef، Puppet و Ansible تنظیمات محیط مجازی را به طور اتوماتیک انجام می‌دهد. از جمله نکات قوت واگرانت استفاده از Vagrantfile است. در این فایل تمامی نیازمندی‌ها و فایل‌های مورد نیاز گردآوری شده و از طریق آن بسیاری از مراحل مورد نیاز جهت ایجاد یک باکس کاهش یافته است.

احتمالا برای شما این سوال ایجاد شده که باکس چیست؟ باکس در واگرانت، فرمتی است که محیط‎های واگرانت از طریق آن و پسوند (.box) شناخته شده و از طریق انتفال این فایل به ماشینی دیگر همان محیط مجددا ایجاد می‌گردد. به طور کلی می‌توان گفت که باکس یک بسته محیط مجازی یا به عبارتی همان ماشین مجازی (Virtual machine) است.

حال که در مورد باکس صحبت شد، بهتر است تا با 2 مفهوم دیگر مورد استفاده در واگرانت نیز آشنا شوید. 

اولین مفهوم ارائه‌دهنده (Provider) است. ارائه‌دهنده محلی است که محیط‌های مجازی در آن به اجرا در می‌آیند. این محل می‌تواند به صورت محلی، از راه دور و یا حتی از طریق سیستم‌هایی مانند داکر باشد. مفهوم دیگر تامین‌کننده (Provisioner) است. تامین‌کننده ابزاری است که به وسیله‌ی آن محیط مجازی تنظیم می‌گردد. این ابزار می‌تواند به صورت ساده به شکل shell script بوده و یا از روش‌های پیشرفته‌تر مانند Chef، Puppet و Ansible استفاده گردد.

واگرانت برای چه کسی مناسب است؟

با توجه به ویژگی‌های خاص واگرانت، این سیستم می‌تواند برای کاربردهای متعددی مورد استفاده قرار گیرد.

توسعه‌دهندگان

اولین و مهمترین کاربرد این سیستم را می‌توان برای توسعه‌دهندگان در نظر گرفت.

واگرانت این امکان را برای توسعه‌دهندگان فراهم نمود که محیطی را به ساده‌ترین حالت مجددا تولید نمود، محیطی که هدف آن اجرای کدها است. در این سیستم با بسته‌بندی نمودن تمامی وابستگی‌ها، تنظیمات، کتابخانه‌ها، فرآیندها و با در نظر گرفتن ویژگی‌های سیستم عامل مانند نسخه آن تحت یک Vagrantfile، این امکان را فراهم آورده است تا بدون از بین رفتن جزئیات و ابزارها (editorها، debuggerها و …) مانند اتفاقی که در هنگام نصب به صورت عادی رخ می‌دهد، محیط مجازی ایجاد گردد. این کار باعث می‌گردد تا بدون وقفه و هزینه محیط‌های متعدد توسعه ایجاد گردیده و به یکدیگر متصل گردند. این کار باعث آسان شدن روند توسعه‌کنندگان در جهت توسعه تیمی و حذف معضل کار بر روی یک دستگاه خاص گردیده است.

مهندسین عملیات

دسته‌ دیگری که می‌توانند از این سیستم استفاده نمایند مهندسین عملیات (Operations engineer) و یا مهندسین DevOps است. واگرانت محیطی قابل استفاده مجدد را فراهم می‌نماید تا امکان توسعه و تست به نحوی راحت‌تر فراهم آید. شما می‌توانید موارد مختلف از جمله shell scriptsها، Chef cookbooks، ماژول‌هایPuppet  و بسیاری گزینه‌های دیگر را بدون دغدغه بر روی محیط‌های مجازی مانند VirtualBox  و VMware تست نمایید. سپس می‌توانید همین موارد را بر روی سیستم‌های راه دور و یا ساختارهای ابری به اجرا درآورده و با استفاده از واگرانت دیگری دغدغه‌ای نداشته باشید.  

طراحان رابط کاربری و تجربه کاربری

شاید برای شما جالب باشد که واگرانت برای طراحان از جمله طراحان رابط کاربری (UI) و تجربه کاربری (UX) نیز کارآمد است. از طریق واگرانت شما می‌توانید تمام مواردی را که برای یک نرم‌افزار تحت وب مورد نظر است، در کمترین زمان و بدون هیچ پیچیدگی ایجاد نمایید. در نتیجه می‌توانید صرفا بر روی فعالیت اصلی خود یعنی طراحی تمرکز نمایید. از طریق این سیستم دیگری نیازی به کمک گرفتن از توسعه‌کنندگان در جهت تنظیم مجدد محیط و رفع مشکلات مربوطه نیست. صرفا کافی است توسعه‌دهنده واگرانت را تنظیم نموده و با استفاده از آن محیط را ایجاد نمایید و طراحی خود را تست کنید.      

علاوه بر تمامی این موارد می‌توان بیان نمود که واگرانت می‌تواند برای تمامی افرادی که نیاز به بررسی و تست در محیط‌های مجازی دارند مناسب باشد.

چگونه از واگرانت استفاده کنیم؟

راه‌های متعددی برای استفاده از واگرانت وجود دارد. از آنجایی که این سیستم متن باز است، امکان دانلود واگرانت به صورت بسته‌های باینری برای لینوکس، مک و همچنین ویندوز به طور رسمی وجود دارد.

همچنین برای بسیاری از نسخه‌های لینوکس شما می‌توانید واگرانت را از طریق ریپازیتوری‌ها (Repository)، به همان نحوی که سایر نرم‌افزارها را دانلود می‌نمایید، نصب کنید. به عنوان مثال برای نسخه لینوکس فدورا این کار به آسانی از طریق دستور زیر امکان‌پذیر است.

sudo dnf install vagrant $

البته مدنظر داشته باشید که سازندگان واگرانت در مورد احتمال به روز نبودن نسخه در برخی ریپازیتوری‌ها هشدار داده و بیان نموده‌اند که بهترین راه دریافت نسخه‌های رسمی است.

پس اگر برنامه‌ای برای تست دارید، می‌خواهید طراحی را انجام دهید یا هر استفاده دیگری که در محیط مجازی امکان انجام آن وجود دارد، واگرانت گزینه‌ای است که می‌تواند کار شما را بیش از پیش آسان نماید. همچنین با توجه به راحتی کار با واگرانت، سیستم مانیتورینگ شبکه زبیکس نیز از این سیستم بهره برده است و شما می‌توانید آن را از طریق لینک زیر مورد استفاده قرار دهید.

https://www.zabbix.com/integrations/vagrant