
در روزهای اولیه توسعه اپلیکیشن، چند خط کد باینری برای راهاندازی یک برنامه کافی بود. اما در سال ۲۰۲۴، این فرآیند نیازمند طی کردن چندین مرحله یا متدولوژی توسعه است که به طور کامل با هم کار میکنند. این متدولوژیها شامل Agile، LEAN و DevOps میشوند. همه این رویکردها با هدف توسعه نرمافزار به صورت اثربخش، یکپارچه و بدون باگ، با سرمایهگذاری هوشمندانه و همواره با در نظر گرفتن مشخصات بازار، انجام میپذیرند.
هر یک از این متدولوژیها استفاده از ابزارهای مختلفی را برای سادهسازی فرآیند توسعه پیشنهاد میدهند. در این رویکرد دواپس، Kubernetes، داکر و Vagrant برخی از پلتفرمهایی هستند که این رویکرد را مؤثر میکنند.
Vagrant ابزاری برای ایجاد محیطهای توسعه است که امروزه در فرهنگ دواپس بسیار مورد استفاده قرار میگیرد. Vagrant با گردش کاری آسان و تمرکز بر اتوماسیون، زمان راهاندازی محیط توسعه را کاهش میدهد، انطباق توسعه/تولید را افزایش میدهد و بهانهی “مشکل خودت است چون روی دستگاه من کار میکند” را به خاطرهای از گذشته تبدیل میکند.
در صورت آشنایی با اصول اولیهی Vagrant، مستندات آن مرجع بهتری برای ساخت تمامی ویژگیها و اجزای داخلی موجود به شما ارائه میدهند. پس ما در این مقاله تنها شما را با این ابزار آشنا میکنیم تا کاربردهای آن را بشناسید.
فهرست مطالب
چرا از Vagrant استفاده کنیم؟
Vagrant که در لغت به معنای انسان ولگرد و فقیری است که نه کار دارد و نه خانه، به شما و تیمتان کمک میکند تا بهرهوری و انعطافپذیری را به حداکثر برسانید. این ابزار محیطهای کاری قابل تنظیم آسان، قابل تکرار و قابل حمل را ارائه میدهد که بر روی فناوریهای استاندارد صنعتی بنا شده و با یک گردش کار منسجم و یکپارچه کنترل میشود.
راز جادوی Vagrant استفاده از زیرساختهای قدرتمند است. ماشینهای مجازی بر روی VirtualBox، VMware، AWS یا هر ارائهدهنده دیگری راهاندازی میشوند. سپس ابزارهای استاندارد پیکربندی مانند اسکریپتهای shell، Chef یا Puppet به صورت خودکار نرمافزار را روی ماشین مجازی نصب و پیکربندی میکنند.
Vagrant ابزاری برای کار با محیطهای مجازی است که در اکثر موارد به معنی کار با ماشینهای مجازی میباشد. Vagrant یک رابط کاربری خط فرمان ساده و آسان برای مدیریت این محیطها و همچنین یک مفسر برای تعریف متنی (Vagrantfile) از شکل ظاهری هر محیط ارائه میدهد. Vagrant متنباز است، به این معنی که هر کسی میتواند آن را دانلود، اصلاح و به صورت رایگان به اشتراک بگذارد.
با وجود اینکه بسیاری از هایپروایزرهای ماشین مجازی رابط خط فرمان خود را ارائه میدهند و از نظر فنی، راهاندازی ماشینهای مجازی از طریق این برنامهها به طور مستقیم یا از طریق اسکریپتهای shell قابل انجام است، اما برتری Vagrant با افزودن یک لایه اضافی، سادگی، قابلیت همکاری در چندین سیستم و رویکردی منسجمتر است که به طور تئوری میتواند با هر محیط مجازی در بالای هر سیستم دیگری مورد استفاده قرار گیرد.
Vagrant با ارائه یک فرمت متنی مشترک برای کار با ماشینهای مجازی، به شما این امکان را میدهد تا محیط خود را به صورت کد تعریف کنید و این کار پشتیبانگیری، اصلاح، به اشتراک گذاری و مدیریت با کنترل نسخه را آسان میکند. همچنین به این معنی است که به جای به اشتراک گذاری کل ایمیج ماشین مجازی که میتواند چندین گیگابایت باشد، هر بار که تغییری در پیکربندی ایجاد شود، یک فایل متنی ساده با وزن تنها چند کیلوبایت قابل اشتراک گذاری است.
برای توسعهدهندگان
اگر توسعهدهنده هستید، Vagrant وابستگیها و پیکربندی آنها را در یک محیط یکبار مصرف و سازگار ایزوله میکند، بدون اینکه هیچکدام از ابزارهایی که با آنها کار میکنید (ویرایشگرها، مرورگرها، اشکالزداها و غیره) را کنار بگذارد. پس از اینکه شما یا فرد دیگری یک Vagrantfile واحد ایجاد کردید، تنها کافیست دستور `vagrant up` را اجرا کنید و همه چیز برای کار شما نصب و پیکربندی میشود. سایر اعضای تیم شما هم محیطهای توسعه خود را از همان پیکربندی ایجاد میکنند، بنابراین فرقی نمیکند روی لینوکس، مک او اس یا ویندوز کار کنید، همه اعضای تیم شما کد را در یک محیط یکسان، با همان وابستگیها و به صورت یکسان پیکربندیشده اجرا خواهند کرد. با این کار با باگهای «روی دستگاه من کار میکند» خداحافظی کنید.
برای اپراتورها
اگر مهندس عملیات یا مهندس DevOps هستید، Vagrant یک محیط یکبار مصرف و گردش کار سازگاری را برای توسعه و تست اسکریپتهای مدیریت زیرساخت در اختیارتان قرار میدهد. میتوانید به سرعت مواردی مانند اسکریپتهای shell، ماژولهای Puppet و Chef cookbooks و موارد دیگر را با استفاده از مجازیسازی محلی مانند VirtualBox یا VMware آزمایش کنید. سپس، با همان پیکربندی، میتوانید این اسکریپتها را روی ابرهای از راه دور مانند AWS یا RackSpace با همان گردش کار آزمایش کنید. اسکریپتهای سفارشی خود را برای بازیافت نمونههای EC2 کنار بگذارید، دست از دست و پنجه نرم کردن با دستورات SSH روی ماشینهای مختلف بردارید و از Vagrant برای ایجاد نظم در کارتان استفاده کنید.
برای همه
Vagrant به عنوان سادهترین و سریعترین راه برای ایجاد یک محیط مجازی، برای همه افراد طراحی شده است! این ابزار به شما امکان میدهد تا به سرعت و به آسانی محیطهای توسعه، تست و استقرار را با استفاده از یک رابط کاربری ساده و قدرتمند ایجاد کنید. فرقی نمیکند که یک توسعهدهنده، مهندس عملیات، مدیر سیستم یا یک کاربر معمولی باشید، Vagrant میتواند نیازهای شما را برآورده کند.
Vagrant را از کجا تهیه کنم؟
مزایای گفته شده، Vagrant را به یک گزینه جالب برای طراحان رابط کاربری (UI) و تجربه کاربری (UX) نیز تبدیل میکند. آنها میتوانند به طور دقیق ببینند که کارشان در یک سیستم متفاوت چگونه به نظر میرسد، یا حتی میتوانند با یک کپی جداگانه از سیستمی که یک توسعهدهنده در حال برنامهنویسی آن است کار کنند، بدون اینکه نیاز به عبور از موانع زیادی باشد.
همچنین اگر میخواهید یک ابزار، سیستمعامل یا محیط جدید را بدون ترس از اشتباهی که ممکن است سیستم فعلی شما را به خطر بیندازد، یاد بگیرید، Vagrant یک ابزار عالی است. فرقی نمیکند برای یک آزمون صدور گواهینامه مطالعه کنید، یک اسکریپت استقرار جدید را آزمایش کنید یا فقط چیز جدیدی را امتحان کنید، میتوانید این کار را با اطمینان انجام دهید که به هیچ چیز در دستگاه محلی یا محیط تولیدتان آسیب نمیرسانید. به عنوان یک امتیاز اضافی، هنگامی که آن را به درستی انجام دادید، میتوانید از همان فرآیند و اسکریپت برای استقرار در یک موقعیت واقعی یا محیط زنده استفاده کنید.
راههای مختلفی برای به دست آوردن Vagrant وجود دارد. Vagrant به عنوان یک بسته باینری برای لینوکس، مک و ویندوز وجود دارد. برای بسیاری از توزیعهای لینوکس، میتوانید Vagrant را در مخازن پیشفرض سیستم عامل بیابید و آن را همانطور که هر نرمافزار دیگری را نصب میکنید، نصب کنید. برای مثال، در فدورا، میتوانید به سادگی دستور زیر را اجرا کنید:
$sudo dnf install vagrant
با این حال، سازندگان Vagrant هشدار میدهند که نسخههای موجود در برخی مخازن بهروز نیستند و ممکن است با استفاده از نصبکنندههای رسمی با مشکلات کمتری مواجه شوید.
اگر به نحوه عملکرد Vagrant به عنوان یک پروژه متنباز علاقهمند هستید، کد منبع Vagrant در GitHub در دسترس است تا بتوانید آن را بررسی کنید، کلون کنید و حتی در آن مشارکت داشته باشید. این ابزار در گیت هاب بیش از ۲۶ هزار ستاره و هزار نفر contributer دارد که نشان از محبوبیت آن دارد.
چگونه کار با Vagrant را شروع کنم؟
بهترین راه برای شروع کار با Vagrant، نصب آن و امتحان کردن خودتان است. به غیر از آن، مستندات رسمی بسیار ارزشمند هستند و راهنماییهای عالی برای برداشتن اولین قدمها ارائه میدهند. همچنین دانستن برخی اصطلاحات اولیهای که توسط Vagrant استفاده میشود، مفید است.
- جعبه (Box): یک جعبه یک محیط Vagrant بستهبندیشده است، که معمولا یک ماشین مجازی است.
- ارائهدهنده (Provider): یک ارائهدهنده، مکانی است که محیط مجازی در آن اجرا میشود. این مکان میتواند محلی (که به صورت پیشفرض از VirtualBox استفاده میکند)، از راه دور یا حتی یک مورد خاص مانند یک کانتینر Docker باشد.
- آمادهساز (Provisioner): یک آمادهساز ابزاری برای راهاندازی محیط مجازی است و میتواند به سادگی یک اسکریپت shell باشد، اما از طرف دیگر میتوان از یک ابزار پیشرفتهتر مانند Chef، Puppet یا Ansible نیز استفاده کرد.
Vagrant با استفاده از یک فایل پیکربندی اعلانی به نام “Vagrantfile” کار میکند که تنظیمات ماشین مجازی مانند ایمیج پایه، شبکه، ذخیرهسازی و اسکریپتهای راهاندازی را تعریف میکند. پس از ایجاد Vagrantfile، میتوانید از دستور “vagrant up” برای ایجاد و راهاندازی ماشین مجازی استفاده کنید. این دستور ایمیج پایه را دانلود میکند، یک ماشین مجازی جدید ایجاد میکند و هر اسکریپت راهاندازی تعریفشده در Vagrantfile را اعمال میکند.
هنگامی که ماشین مجازی راهاندازی شد و در حال اجرا است، میتوانید از دستور “vagrant ssh” برای ورود به ماشین مجازی و شروع کار استفاده کنید. نوشتن و تست کد شما آسان است زیرا هر تغییری که در فایلهای روی رایانه محلی خود ایجاد کنید، به طور خودکار با ماشین مجازی همگامسازی میشود. هنگامی که کارتان تمام شد، میتوانید از دستور “vagrant halt” برای خاموش کردن ماشین مجازی یا “vagrant destroy” برای حذف کامل آن استفاده کنید.
راهاندازی اولیه Vagrant
راهاندازی اولیه Vagrant نسبتاً ساده است. ابتدا باید نرمافزار Vagrant را روی رایانه محلی خود نصب کنید. همچنین نیاز به نصب یک پلتفرم مجازیساز مانند VirtualBox، VMware یا Hyper-V دارید. پس از نصب Vagrant و پلتفرم مجازیساز، میتوانید با دنبال کردن این مراحل اولین محیط Vagrant خود را ایجاد کنید:
- یک پوشه جدید برای پروژه Vagrant خود ایجاد کنید.
- یک ترمینال یا خط فرمان را در پوشه جدید باز کنید.
- دستور “vagrant init” را برای ایجاد یک Vagrantfile جدید اجرا کنید.
- Vagrantfile را ویرایش کنید تا تنظیمات ماشین مجازی خود را مانند ایمیج پایه، شبکه و اسکریپتهای راهاندازی تعریف کنید.
- دستور “vagrant up” را برای ایجاد و راهاندازی ماشین مجازی اجرا کنید.
- دستور “vagrant ssh” را برای ورود به ماشین مجازی و شروع کار اجرا کنید.
ویژگیها و موارد استفاده پیشرفته Vagrant
Vagrant ویژگیها و موارد استفاده پیشرفتهای را ارائه میدهد که میتواند به توسعهدهندگان در سادهسازی گردش کار توسعه و بهبود بهرهوری کمک کند. در اینجا برخی از ویژگیها و موارد استفاده پیشرفته Vagrant آورده شده است:
- محیطهای چند ماشینه: Vagrant به شما امکان میدهد چندین ماشین مجازی را در یک Vagrantfile واحد تعریف و مدیریت کنید، که میتواند برای شبیهسازی توپولوژیهای شبکه پیچیده یا سیستمهای توزیعشده مفید باشد.
- نسخهبندی و به اشتراک گذاری جعبه (Box): Vagrant از نسخهبندی و به اشتراک گذاری ایمیجهای پایه که به عنوان “جعبه” شناخته میشوند، پشتیبانی میکند که میتواند به این امر کمک کند که همه اعضای تیم از یک محیط یکسان برای توسعه و تست استفاده کنند.
- آمادهسازی با ابزارهای مدیریت پیکربندی: Vagrant با ابزارهای محبوب مدیریت پیکربندی مانند Puppet، Chef و Ansible ادغام میشود و به شما امکان میدهد راهاندازی و پیکربندی ماشینهای مجازی خود را به صورت خودکار انجام دهید.
- یکپارچهسازی و تست مستمر: Vagrant را میتوان با ابزارهای یکپارچهسازی مستمر (CI) مانند Jenkins، Travis CI و CircleCI ادغام کرد و به شما امکان میدهد تا تستهای خودکار و خطوط ساخت را با استفاده از ماشینهای مجازی Vagrant اجرا کنید.
مقایسه Docker و Vagrant
بیایید از همان ابتدا شروع کنیم. هدف نهایی توسعه هر برنامه چیست؟ هدف نهایی، ساخت کل معماری و منطق به گونهای است که برنامه صرفنظر از دستگاه، سیستمعامل، نسخه و مرحله توسعه، به طور یکسان و صحیح کار کند. اما چگونه میتوانید مطمئن شوید که اینطور است؟
در پاسخ به این سوال، منطقی است که چند کلمه در مورد رویکرد DevOps صحبت کنیم، که فرآیند توسعه و عملیات برنامه را به یکدیگر نزدیک میکند. به عنوان بخشی از این رویکرد، همه متخصصان در حال کار بر روی برنامه به هم نزدیکتر میشوند و مسئولیت عملکرد صحیح برنامه را به اشتراک میگذارند. هر قسمت ایجاد شده قبل از شروع کار روی مرحله بعدی به دقت بررسی و آزمایش میشود.
فرض کنید یک برنامه یا بخشی از آن را داریم. چگونه مطمئن شویم که به روشی که در نظر داشتیم کار میکند، بدون اینکه نیاز به استفاده از دهها دستگاه مختلف باشد؟ برای این کار به یک محیط توسعه مجازی نیاز داریم که تضمین کند برنامه ما به همان روشی که در ابتدا در نظر گرفته شده است کار کند. Vagrant و Docker دو پلتفرم هستند که این مشکل را حل میکنند، با این حال، آنها این کار را به روشهای متفاوتی انجام میدهند.
طبق تحقیقات انجام شده، «Docker و Vagrant دو ابزاری هستند که میتوان از آنها برای تامین زیرساخت استفاده کرد. Vagrant ابزاری است که برای خودکارسازی پیکربندی ماشینهای مجازی استفاده میشود، در حالی که Docker برنامه را با تمام کد، وابستگیها و کتابخانههایش در یک کانتینر محصور میکند تا به راحتی در هر محیط مجازی مستقر و بدون مشکل کار کند.»
به عبارت ساده، Vagrant به ما امکان میدهد تا با توجه به نیازهای خود، یک محیط مجازی ایجاد کنیم، در حالی که Docker برنامهها را با تمام کد، وابستگیها و کتابخانههایش به گونهای کانتینر میکند که به راحتی در هر محیط مجازی مستقر و بدون مشکل کار کند.
آیا Vagrant با VMware سازگار است؟
کمپانی HashiCorp یک ارائهدهنده رسمی برای نرمافزارهای VMware Fusion و VMware Workstation برای Vagrant توسعه داده است. این ارائهدهنده به Vagrant اجازه میدهد تا از ماشینهای مجازی مبتنی بر VMware استفاده کند و از پایداری و عملکرد بهبود یافتهای که نرمافزار VMware ارائه میدهد، بهرهمند شود.
پلاگین Vagrant VMware اکنون تحت مجوز MPL متنباز شده است. مخزن کد این پلاگین در GitHub در دسترس است. این ارائهدهنده جایگزینی برای VirtualBox است. توجه داشته باشید که VMware Fusion و VMware Workstation محصولات تجاری هستند که قبل از استفاده از این ارائهدهنده، باید به صورت جداگانه خریداری و نصب شوند.
آیا میتوان در داخل Vagrant، داکر را اجرا کرد؟
ابزار آمادهساز Docker در Vagrant میتواند به طور خودکار Docker را نصب کند، کانتینرهای Docker را دریافت کند و پیکربندی کند تا کانتینرهای خاصی در زمان راهاندازی اجرا شوند.
این ابزار برای سازمانهایی که از Docker برای توزیع مواردی مانند برنامه یا سرویسهای خود استفاده میکنند، ایدهآل است. همچنین، اگر به تازگی کار با Docker را شروع کردهاید، ابزار آمادهساز Docker سادهترین راه ممکن برای شروع استفاده از Docker را ارائه میدهد، زیرا این ابزار نصب Docker را برای شما به صورت خودکار انجام میدهد.
پس ابزار آمادهساز داکر میتواند در کنار سایر ابزارهای آمادهساز موجود در Vagrant برای راهاندازی هرچه بهتر محیط کاری شما استفاده شود. برای مثال، شاید شما از Puppet برای نصب سرویسهایی مانند پایگاه داده یا وب سرور استفاده کنید، اما از Docker برای میزبانی زمان اجرای برنامه خود استفاده میکنید. در این صورت میتوانید از ابزار آمادهساز Puppet به همراه ابزار آمادهساز Docker استفاده کنید.
استفاده از Vagrant در هایپروایزر ESXi
پلاگین Vagrant یک پشتیبانی ارائهدهنده (Provider) برای VMware ESXi اضافه میکند. این امر به Vagrant اجازه میدهد تا بدون نیاز به vCenter یا VShpere، مستقیماً روی هایپروایزر ESXi ماشینهای مجازی را کنترل و راهاندازی کند. هایپروایزر ESXi یک دانلود رایگان از VMware است!
همه افراد به vCenter / vSphere دسترسی ندارند… vCenter هزینه زیادی دارد. اما ESXi رایگان است! با استفاده از این پلاگین، میتوانید از یک هاست مرکزی VMware ESXi برای نیازهای توسعه خود استفاده کنید. استفاده از یک هاست مرکزی، بار اضافی روی سیستم محلی شما را (در مقایسه با استفاده از KVM یا VirtualBox) کاهش میدهد.
برای استفاده از این پلاگین به پروژه vagrant-vmware-esxi در گیت هاب مراجعه نمایید.
معرفی کمپانی HashiCorp، سازنده ابزار Vagrant
هشیکورپ، شرکت پیشرو در زمینه «زیرساخت ابری» است که به سازمانها کمک میکند تا محیطهای چندابری و ترکیبی را با مدیریت چرخه عمر زیرساخت و مدیریت چرخه عمر امنیت به صورت خودکار درآورند. مجموعهی محصولات این شرکت – که بر اساس پروژههایی با کد منبع آزاد در دسترس عموم ساخته شدهاند – از مهمترین برنامههای کاربردی برای بزرگترین شرکتهای جهان پشتیبانی میکنند.
به عنوان بخشی از یک تغییر نسل جدید به سمت ابر، سازمانها با اندازههای مختلف، از برندهای شناختهشده گرفته تا استارتآپهای جاهطلب، برای مدیریت کل چرخه عمر زیرساخت و امنیت به راهکارهای این شرکت اعتماد میکنند تا بتوانند خدمات ضروری، ابزارهای ارتباطی و پلتفرمهای سرگرمی را در سطح جهانی ارائه دهند.
هشیکورپ در حال ساخت یک شرکت زیرساخت نرمافزاری منحصر به فرد با رویکردی متفاوت است. به جای تمرکز صرف بر فناوریها، فرآیندهای کاری این شرکت برای حل مشکلات دنیای واقعی اپراتورهای فناوری اطلاعات که با محیطهای چندابری و ترکیبی کار میکنند، طراحی شدهاند.
هشیکورپ، زیرساخت ابری را بر روی پلتفرم ابری هشیکورپ (HCP) برای سرویسهای ابری مدیریتشده، و همچنین محصولات سازمانی خود-میزبانی و محصولات جامعه با کد منبع آزاد ارائه میدهد. محصولات HashiCorp سال گذشته بیش از نیم میلیارد بار توسط متخصصان نرمافزار دانلود شد.
داستان شکلگیری هشیکورپ
میتچل هشیمووتو (Mitchell Hashimoto) و آرمون دادگر (Armon Dadgar)، بنیانگذاران هشیکورپ، در سال ۲۰۰۸ در دانشگاه واشنگتن با هم آشنا شدند. آنها در یک پروژه تحقیقاتی مشترک روی این موضوع کار میکردند که چطور فناوریهای پیشگامانهی ابر عمومی که در آن زمان توسط آمازون و مایکروسافت توسعه مییافتند، در دسترس دانشمندان قرار گیرند.
بعد از فارغالتحصیلی، هر دو به سانفرانسیسکو نقل مکان کردند. در آنجا بود که میچل، با درک تأثیری که این فناوری در حال گذاشتن بر جهان بود، در سال ۲۰۱۱ شرکت هشیکورپ را تأسیس کرد و آرمون نیز سال بعد به عنوان یکی از بنیانگذاران به او پیوست.
با گسترش adoption (استفاده و پذیرش) ابر، آنها متوجه شدند که سازمانها در نهایت نیاز به پذیرش چندین ابر (multi-cloud) پیدا خواهند کرد و در نتیجه به مجموعهای سازگار و قابل اعتماد از ابزارهای خودکارسازی نیاز خواهند داشت تا برنامههای خود را به صورت یکپارچه در هر ترکیبی از محیطهای چند ابر و درونسازمانی مستقر و متصل کنند.



