نوین هاست در این پست قصد دارد به بیان مطالبی در خصوص معرفی vagrant و ابزاری که Vagrantfile نامیده می شود ، بپردازد. مطمئناً شما مطالبی در مورد این ابزار شنیده اید. احتمالاً شما نیز تصوراتی در مورد ماهیت این ابزار و کاری که انجام می دهد ، دارید . امیدواریم که این مطالب بتواند تا حدی ابهامات ذهنی شما را در این مورد برطرف کند.
معرفی vagrant به زبان ساده
به زبان ساده ، معرفی vagrant یک ابزار اتوماسیون با زبان مخصوص به خود (DSL) است که برای ساخت ماشینهای مجازی (VM) و محیطهای VM به صورت خودکار مورد استفاده قرار می گیرد. این تعریف بدان معناست که کاربر با استفاده از زبان (Vagrant (DSL می تواند مجموعه ای از دستورالعملهایی را بنویسد که یک یا چند ماشین مجازی را راه اندازی و احتمالاً پیکربندی خواهند کرد. هر بار که کاربر از یکسری دستورات از پیش نوشته شده استفاده می کند ، به نتیجه ای کاملاً مشابه دست پیدا خواهد کرد. این ویژگی در برخی موارد از قبیل مواردی که برنامه نویسان می خواهند محیط ثابتی ایجاد کنند و یا کسانی که می خواهند یک محیط نمونه یا نمایشی را با سایر کاربران به اشتراک بگذارند ، می تواند مفید باشد.
Vagrant با استفاده از اجزای مختلف خود این کار را انجام می دهد:
تأمین کنندگان
تأمین کنندگان در واقع پشتیبان یا ” عقبه ” vagrant محسوب می شوند. در اصل Vagrant ، خودش هیچگونه عملکرد مجازی سازی ندارد ؛ بلکه برای انجام این وظیفه ی سنگین به سایر محصولات متکی است. تأمین کنندگان در حقیقت چگونگی تعامل Vagrant با سایر محصولاتی که کار اصلی مجازی سازی را انجام می دهند ، را نشان می دهند. VirtualBox ( تأمین کننده ی پیش فرض Vagrant ) ، VMware Fusion, Hyper-V, vCloud Air و یا AWS چند نمونه از این تأمین کنندگان هستند.
Boxes
باکس ها بخش اصلی و مرکزی Vagrant هستند. باکس ها image از پیش تعریف شده ای هستند که Vagrant از آنها برای ساخت محیطهایی مطابق با دستورات صادر شده از سوی کاربر ، استفاده می کند. یک باکس ممکن است نصب یک سیستم عامل ساده باشد و یا ممکن است نصب سیستم عامل به علاوه ی چند برنامه ی نصب شده بر روی آن باشد.
باکس ها می توانند تنها با یک تأمین کننده و یا با چند تأمین کننده کار کنند ، به عنوان مثال یک باکس ممکن است تنها با VirtualBox, و یا هم با VirtualBox, و هم با VMware Fusion کار کند . نکته ای که باید به آن توجه داشت این است که در مواردی که باکس با چند تأمین کننده کار می کند ، در حقیقت ورژنهای مختلف یک باکس این کار را انجام می دهند ؛ یعنی مثلاً یک ورژن از باکس مورد نظر با VirtualBox, کار می کند ، ورژن دیگر با AWS و ورژن دیگر با VMware Fusion . یک ورژن مشخص از یک باکس تنها می تواند با یک تأمین کننده کار کند.
Vagrantfile
Vagrantfile حاوی دستوراتی است که کاربر به زبان Vagrant (DSL) در مورد شکل ظاهری محیط مجازی مورد نظر صادر کرده است ؛ این دستورات شامل مواردی همچون تعداد و نوع ماشینهای مجازی ، تأمین کننده ، نحوه ی اتصال ماشینهای مجازی به یکدیگر و … می شوند. زبان Vagrant و در نتیجه Vagrantfile بر مبنای Ruby هستند.
راهکار ها و موارد استفاده
زمانی که تازه کار با Vagrant را شروع می کنیم ، نخستین چیزی که می آموزیم ، آن است که Vagrant ابزاری است که به ساده شدن روند ساخت اپلیکیشن ها / کد ها از مرحله ی طراحی تا تولید ، کمک می کند. در نهایت ، اگر شما تأمین کنندگانی دارید که هم از VirtualBox, و هم از مرکز مجازی VMware پشتیبانی می کنند و باکس هایی دارید که با هر دوی این تأمین کننده ها کار می کنند ، می توانید یک فایل Vagrantfile واحد بنویسید که هم در تولید و هم در طراحی محیط یکسانی ایجاد کند. جالب است ، نه؟
این امر در تئوری امکان پذیر است. اما زمانی که با کسانی که آشنایی بیشتری با Vagrant دارند ، صحبت می کنیم. این کار به نظر چندان عملی نمی آید. از آنجا که تأمین کننده های مختلف با ورژنهای مختلفی از یک باکس کار می کنند. ( همانگونه که پیش از این در معرفی vagrant اشاره کردیم) ، این جعبه ها تفاوت مختصری با یکدیگر خواهند داشت. و بنابراین نمی توان با یک vagrantfile واحد به نتایج کاملاً یکسانی دست یافت. می توان Vagrantfile را به شیوه ای نوشت که تأمین کننده های مختلف را تشخیص دهد. و به هر تأمین کننده به شیوه ای متفاوت واکنش نشان دهد. اما این کار مسلماً روند کاری را پیچیده تر می کند.
با در نظر گرفتن مسائل فوق به نظر می رسد سودمند ترین کاربردهای Vagrant عبارتند از :
- سرعت بخشیدن به روند ایجاد محیط ساخت و طراحی
- فعالسازی ورژن کنترل محیطهای طراحی و ساخت ( از طریق ورژن کنترل Vagrantfile )
- ایجاد سطح قابل قبولی از ثبات در میان سازندگان و پرنامه نویسان مختلف
- تسهیل در به اشتراک گذاشتن محیطهای ساخت و طراحی با سایرین
این Vagrantfile باکس (“ubuntu/precise64”) و URL باکس ( از مخزن Canonical در image سرور است با دیرکتوری جاری (“.”) در هاست به اشتراک گذاشته شود / همگام شود ، تعیین می کند. در این مثال ، دیرکتوری جاری همان دیرکتوری است که فایل vagrantfile در آن ذخیره شده است.
برای داشتن Vagrant و استفاده از این مجموعه دستورات ، فرمان زیر را از دیرکتوری که Vagrant file در آن قرار دارد. اجرا کنید: vagrant up
با اجرای این فرمان ، می بینید که اتفاقهایی می افتد و در ادامه ی این اتفاقات ، پیامی مبنی بر بوت شدن و آماده بودن ماشین مجازی و نصب شدن پوشه های به اشتراک گذاشته شده مشاهده خواهید کرد . اگر از virtualBox استفاده می کنید. پیغام هشداری با این مضمون خواهید دید : ” ورژن VirtualBox Guest Additions با ورژن VirtualBox همخوانی ندارد.” پس از اتمام این جریانات ، شما به صفحه ی اصلی کار خود باز می گردید. و از آنجا می توانید به سادگی و تنها با فرمان vagrant ssh به ماشین مجازی که به تازگی ایجاد شده است ، متصل شوید.
سایر فرمان های Vagrant عبارتند از :
- vagrant halt برای خاموش کردن ماشین مجازی
- vagrant suspend برای توقف کار ماشین مجازی و vagrant resume برای شروع به کار مجدد ماشین مجازی
- vagrant status برای نشان دادن وضعیت ماشین مجازی
- vagrant destroy برای حذف ماشین مجازی