سؤال لماذا يجب أن أستخدم Vagrant بدلاً من VirtualBox فقط؟


لقد تم استخدام VirtualBox لسنوات عديدة لإنشاء بيئة تطوير.

الكثير من زملائي يتحدثون عن Vagrant ويبدو أن الكثير من الناس متحمسين لذلك ولكني لا أستطيع فهم الفوائد المترتبة عليه .. يبدو لي وكأنه سلسلة من الأوامر الجديدة للتعلم من أجل القيام بنفس الأمر أشياء فعلت مع Virtualbox.

مع VirtualBox ، أقوم بتثبيت وتهيئة بيئة مثالية ، ثم يمكنني تجميعها كـ OVA أو أيا كان ومشاركتها مع مستخدمي المكتب الآخرين. يمكنك أخذ لقطة في VirtualBox إذا حدث خطأ ما.

الدمى والطهاة ليسا حقًا جزء من المتشرد ، إنهما شيئان حقهما؟

إذن ، نعم ، ما هي المزايا التي يقدمها Vagrant عبر VirtualBox على وجه الخصوص؟


214
2018-04-17 14:39


الأصل


بعد عامين من الآن أنا أستخدم Vagrant كل يوم من أجل التطوير - إنه لأمر رائع! يستخدمه فريقي وقد حلت مشكلات بيئة التطوير الخاصة بنا. - John Hunt
برأيك هنا: إذا لم يكن لديك أي مشكلة في إعداد خوادم PXE ، فاعلم VBoxManage عن ظهر قلب ، تعرف على كيفية إعداد nfs في أقل من دقيقة وما إلى ذلك ، وأيضًا مثل إدارة سلاسل الإنشاء مباشرة .. ليس هناك أي نقطة على الإطلاق. ترتفع القيمة مع كل جزء من اللغز الذي تفتقده. الاستخدام الواسع النطاق ليس من الدمج الدمج ، ولكن لأن الناس كانوا يستطيعون التقاط الصور الموبوءة عبر الإنترنت. بغض النظر عما يقولونه لك. - Florian Heigl
كما أنني وجدت المتشرد أكثر فائدة في فريق متعدد المطورين بينما كنت في السابق. فرضت المتشرد على فريقي واكتشفت ذلك حيث تأتي القيمة. - John Hunt
3.5 سنوات وأنا الآن استخدام عامل ميناء كل يوم من أجل التنمية. إنه أمر جيد ، ولكن وحش مختلف للمتشرد ... اعتمادا على متطلباتك ، أعتقد أن المتشرد لا يزال منصة تطوير أفضل للفرق - إنه أسهل بكثير للعمل معه. - John Hunt
بعد 4 سنوات واكتشفت عامل ميناء رهيبة. عاشت فاجرانت. - John Hunt


الأجوبة:


هذا سؤال كبير ، لذا سأقوم بتقسيمه إلى قسمين.

المتشرد

يستخدم Vagrant لإعداد جهاز ظاهري واحد أو أكثر من خلال:

  • استيراد صور سابقة التصنيع (تسمى "مربعات")
  • إعداد إعدادات خاصة بـ VM (عنوان IP ، أسماء المضيفين ، إعادة توجيه المنفذ ، الذاكرة ، إلخ.)
  • تشغيل برنامج توفير مثل Puppet أو Chef

لاحظ أنه لا يقوم بتثبيت البرنامج أو إعداد الجهاز بعد تحميل VM وتعيين إعدادات VirtualBox. التفكير في الأمر كمحرك برمجة ل VirtualBox.

فيما يلي بعض الأسباب التي رأيتها لاستخدام Vagrant عبر VirtualBox فقط.

1. إعداد شبكات Multi-VM بسهولة

لقد كان معظم محتوى المستخدم القوي Vagrant الذي قرأته حول إعداد العديد من أجهزة VM في نفس الوقت. يعطيك Vagrant ملف تهيئة واحد لإعداد هذه الإعدادات ، مما يتيح لك إطلاق كل منهم بأمر واحد.

لنفترض أنك قمت بتهيئة ثلاثة أجهزة VM للتواصل مع بعضها البعض باستخدام عناوين IP ثابتة على الشبكة الفرعية 192.168.1. *. تجد نفسك في موقع يستخدم هذه الشبكة الفرعية بالفعل لتسليم عناوين IP ، وتتعارض الآن أجهزة VM الخاصة بك. مع Vagrant ، يمكنك ببساطة تحرير Vagrantfile وإعادة تحميل VMs ، بينما مع VirtualBox سيكون لديك لفتح الإعدادات لكل VM ، إذا لم يكن التمهيد كل VM وتغييرها في الداخل.

2. التحكم في المصدر

عن طريق وضع الإعدادات في ملف نصي ، فإنه يتيح وضع التهيئة تحت التحكم بالمصادر. أجرت بعض التغييرات الأسبوع الماضي وكسرت الصورة عن طريق الخطأ؟ فقط العودة التغييرات وإعادة تحميل VM. يمكنك إنجاز ذلك باستخدام لقطات VirtualBox ، ولكنها ستستهلك مساحة أكبر بكثير من مجرد Vagrantfile.

3. منصات مختلفة

هناك عدد كبير من المربعات المتاحة في مواقع مثل http://vagrantbox.es. يمكّنك هذا من تجربة أنظمة تشغيل مختلفة أو توزيعات ، مع تطبيق نفس الإمداد لإعداد بيئات مماثلة. يمكن أن يساعد هذا في اختبار أو إضافة دعم إلى الأنظمة الأساسية الجديدة ، ويستغرق وقتًا طويلاً باستخدام VirtualBox فقط.

هناك الكثير من الحجج لاستخدام برنامج التزويد ، وكذلك استخدام لقطات الصورة. لإجراء مناقشة إضافية ، سأوجهك إلى مقالة ستيفن نيلسون سميث الممتازة كيفية بناء 100 خادم ويب في يوم واحد.


146
2018-04-27 05:41



ومع ذلك ، لا أفهم لماذا يجب أن أستخدم المتشرد في بيئة التطوير! لأنه ، باهظ الثمن (إذا كنت ترغب في استخدام برنامج VMWare!) يمكننا إعداد آلة افتراضية مثل مربعات الأساس التي يستخدمها المتشرد ثم الحصول على نسخة من VMware لإعداد جهاز ظاهري آخر. أولا وقبل كل شيء ، يمكننا التحكم في جميع إعدادات الجهاز الافتراضية من قبل vmrunالأمر الذي يقدمه VMware حتى يتغير عنوان IP أو يشغل نصًا داخل جهاز الضيف! - Oğuz Çelikdemir
@ OğuzÇelikdemir هذه نقطة عادلة. يضع المتعجرف مجرد واجهة سهلة لبرنامج VMWare فيما يتعلق بإعداد جهاز جديد. وراء الكواليس ، فإنه يستخدم vmrun للسيطرة عليها. كنت دائما استخدام فيرتثلبوإكس ، وبالتالي ليس لديها أي خبرة مع الخلفية VMWare. - Adam Lukens
AdamLukens ، شكرًا على التعليقات التفصيلية. ما ذكرته يبدو مثيرا للاهتمام .. لكنني أتساءل إذا كنت على علم VboxManage أمر؟ virtualbox.org/manual/ch08.html  يمكن إنشاء كل ما ذكرته تقريبًا كبرنامج نصي من خلال تمرير المعلمة ip / المعلمة المحددة vboxmanage controlvm أو أمر مماثل في برنامج نصي شل ثم التحكم في الإصدار ذلك .. لذلك كيف vagrant تحسين أكثر virtualbox؟ - alpha_989
@ alpha_989 أوافق. يبدو أن هناك نقطة فريدة لاستخدام Vagrant. فقط من أجل الراحة. - Niklas Rosencrantz


بالإضافة إلى الإجابة الممتازة التي قدمها آدم ، فإن Vagrant تربط كل شيء معًا. على الرغم من أن الشيف والدمى (والمخطوطات الخاصة بالملح والصدقة وأي موفر آخر ترغب في استخدامه) هي أشياء منفصلة ، إلا أن Vagrant يربطها ببعضها البعض ويجعلها تعمل مع vagrant up.

هذا الأمر واحد سوف

  1. فقط قم ببدء الـ VM إذا كان هذا هو كل ما تحتاجه ، لكنه سوف يكون كذلك
  2. إنشاء المربع من المربع الأساسي المحدد الخاص بك إذا لم يتم ذلك أيضًا ، ولكن إذا لم يكن لديك مربع الأساس على جهازك ، فسيتم أولاً
  3. إحضرها من عنوان URL الخاص بها وقم بتنزيلها على جهازك.

ليس عليك التفكير في كل ذلك. دعنا نقول أنك التحول إلى مشروع آخر، واحد التي كتبها زميل في العمل. عليك فقط التحقق من رمز من الريبو الخاص بك ، وتشغيل vagrant up، لا تقلق بشأن تنزيل ISO أو تثبيت أي شيء ، أو التساؤل عن أي إصدار توزيعة تحتاج إلى استخدامها لهذا العميل بعينه ، أو ما إذا كان لديك نسخة من جهاز VM يتوفر بالفعل على كل ما تحتاج إليه.

حتى أنك لا داعي للقلق حول ما إذا كان قد وضع الامور باستخدام الشيف أو العرائس أو البرامج النصية مجرد صدفة. (حسنا ، لذلك قد تحتاج إلى القيام به bundle install أو تأكد من أنك قمت بتثبيت كل شيء ، ولكنك لم تكن صفقة كبيرة.)

من خلال ربط كل شيء معًا ، وتوفير واجهة موحدة لكل ذلك ، يمكن أن يجعل كل حالات الاستخدام أبسط بكثير أسهل بكثير. في البداية ، قد تشعر وكأنك مجرد إعادة استخدام طريقة جديدة للقيام بما تقوم به بالفعل ، ولكن بمجرد التعمق في استخدام Vagrant ، ستكتشف أنه يمكنك القيام بالمزيد من الجهد بجهد أقل. سيكون الأمر يستحق الاستثمار الأولي.


26
2018-01-09 17:56



ولكن من الجهل بالنسبة لي أن أرسل مطورًا إلى VM صورة مسبقة الدفع أكثر مما هو عليه بالنسبة لهم لتثبيت المتشرد ، وتعلم كيفية استخدامه ، والتعامل مع أي من المشاكل العديدة التي تنشأ ، لا سيما عند دعم مربعات النوافذ. أنا فقط حقا لا تحصل عليه ، إما. يبدو أن يكون شيء سوى fanboys. - hopeseekr
تثبيت المتشرد سهل للغاية في هذه الأيام. لا يمكن الوثوق بأى شخص لا يمكنه تثبيته لكتابة الكود. وجود Vagrantfile في التعليمة البرمجية المصدر التي يقوم مطور البرامج بها بالفعل أسهل بكثير من إرسال VM. يحدد Vagrantfile الإعداد ، بما في ذلك عنوان URL الذي يتم من خلاله تنزيل VM الأساسي (الذي يقوم بعد ذلك بتكوينه). إذا لم تكن بحاجة في البداية إلى إجراء تغييرات على التكوين ، فسيتم تعيينك بالكامل. ولكن أثناء العمل في مشروعك ، ستحتاج على الأرجح إلى إجراء تغييرات. افعل ذلك في Vagrantfile الخاص بك. - iconoclast
نظرًا لأنك تحتفظ بـ Vagrantfile برمزك ، فإن جميع المطورين الذين ينضمون إلى المشروع سيحصلون تلقائيًا على التغييرات التي تجريها على الجهاز الظاهري الخاص بك ، نظرًا لأنك تجعلهم في Vagrantfile. لا يلزم أن يكون تكوين Vagrantfile صعباً. يمكنك استخدام تزويد القشرة إذا وجدت أن الشيف والدمى يكونان مبالغة (وهي غالباً ما تكون). إذا كان بإمكانك إدخال أوامر shell في VM ، فستكون العقبة الصغيرة لإعداد أوامر توفير shell في Vagrantfile. سوف يتطلب الأمر جهدا صغيرا مسبقا ويوفر لك الكثير من الصداع على المدى الطويل. - iconoclast
hopeseekr أنا أيضا أفكر في هذا. لقد واصلت القراءة في محاولة لمعرفة الفائدة. أعتقد أنني أخيرًا. لقد كنت أقرأ كتابًا عن شبكة بايثون. الاختبار هو عبارة عن مجموعة معقدة من الأجهزة التي يمكنك استخدامها للتعلم. يمكنك إنشاء VM w / Linux ، والقيام بذلك بشكل يدوي ، وأنا شخص واحد ، لذلك لا بأس. قمت بتثبيت Vagrant على Windows وأدخلت ثلاثة أوامر Vagrant لاستدعاء صورته لاستخدامها على VirtualBox. ماذا لو كان لدي 50 جهاز كمبيوتر؟ وقتًا طويلاً للإعداد باستخدام اللقطات. ماذا لو كانت هناك تغييرات؟ 50 تحديثات؟ بالنسبة لي ، تمكنت من بدء العمل على الفور دون إعداد أي شيء. - johnny
وعندما تحتاج إلى تغيير شيء ما على جميع أجهزة الكمبيوتر 50؟ - iconoclast


القدرة على دمج الشيف أو الدمية في التوفير VM هو المفتاح. سوف يخبرك معظم مستخدمي Vagrant بأنهم يقومون بإدارة "توفير متعارض" و "إعادة تحميل متقطع" في كثير من الأحيان أكثر من "المتشرد" أو "التدمير المتشرد". تشير هذه المهام إلى أن العمل الحقيقي ليس في دوران أعلى أو لأسفل VMs ولكن "إدارة" بعد هذه الحقيقة.

لطرح سؤال أفضل (يطرحه مستخدمو الطهاة بارعون ، على أي حال) قد يكون السبب في استخدام Vagrant وليس السكين مع البرنامج المساعد المناسب (سيحصل على البرنامج المساعد virtualbox ، في لحظة)؟ على سبيل المثال ، تمرير قيم الحجة المخزنة في حقيبة بيانات إلى ملحق سكينة هو (طريقة) أكثر ذكاءً ومرونة وقابلاً للإدارة من لعب واحد من Vagrantfile العملاق. عادةً ما أحدد موارد "الديناميكية" الخاصة بي مثل # من وحدات المعالجة المركزية (CPU) ، وكمية الذاكرة ، ونظام التشغيل الذي سيتم نشره ، واسم المضيف ، وعنوان IP ، والمسارات ، وما إلى ذلك ، في databag (s) الشيف بحيث لا أحتاج إلى تغيير وصفيتي ؛ - ). تحرير databag من خلال واجهة الويب الشيف هو مهمة إدخال البيانات سهلة حقا يمكن أن أعطي لمشغلي معظم صغار. مع Vagrantfile ، رمز modiyfing الخاص بك إلى الأبد وصدق أو لا تصدق - فواصل الكود - والتي تضمن إلى حد كبير أنك لن تسلم تغييرات بسيطة لموظفي العمليات ، من أي وقت مضى.

بصرف النظر عن حقيقة أن السكين ليس له بعد مكون إضافي لـ virtualbox (على الرغم من أنني أتصور واحدًا في المستقبل غير البعيد) ، فهناك بالفعل ملحقات لمعظم منتجات "المحاكاة الافتراضية" ، بما في ذلك vmware و xenserver وكل "سحابة" كبرى. مزود ، كذلك. وهذا يعني أن السكين أفضل بكثير مما يقدمه Vagrant إذا كنت مستعدًا للتحرك خارج الـ virtualbox. في الوقت الحالي ، يبدو مجتمع الشيف سعيدًا للسماح لمستخدمي فيرتثابوكس بالتأرجح مع Vagrant عن طريق عدم دمج virtualbox apis لمكوّن سكيني. هناك المساعد سكين المتشرد الذي لا يسمح لاستخدام الأكياس البيانات لتمرير الوسائط. ولكن، فإنه لا يزال يتطلب برنامج المتشردين وانها متجانسة Vagrantfile للعمل.

لذا ، سأخرج على أحد أطرافه وأقول إن Vagrant بالتأكيد ليس أفضل من الشيف بسكين. ولكن ضروري (في الوقت الحالي) إذا كنت تصر على virtualbox وربما "أسهل" من إدارة الطاهي مع أكياس البيانات ، بشرط أن يكون لديك بيئة بسيطة إلى حد ما للإدارة.


8
2018-03-21 14:13





فيما يلي حالتين إضافيتين لمستخدمي المطوِّرين يبسطها المتفرّد (عبر "عادي" VirtualBox). لم أشاهد حالات الاستخدام هذه التي تم استدعاؤها تحديدًا في الإجابات السابقة.

  1. يساعد المتشرد بهدف الحفاظ على منصات التطوير والإنتاج قريبة من بعضها البعض قدر الإمكان. في عالم مثالي ، يمكنك توفير بيئة الإنتاج باستخدام البرامج النصية SAME المستخدمة لتوفير Vagrant VM ، مما يقلل المفاجآت في وقت النشر.

  2. اختبارات التكامل والتكامل المستمر: من السهل التحكم في Vagrant من الاختبارات ، وبالتالي يمكن التحكم في أكوام مكونة متعددة الأجهزة بسهولة من أدوات مثل جنكينز عند إجراء الاختبارات.

نعم ، يمكن استخدام VirtualBox هنا "عادي" - ولكن الاتفاقيات التي يستخدمها المتشرد تجعل الأمر أكثر بساطة لضبط هذه السيناريوهات.


8
2018-06-20 11:19



أنا على محمل الجد مجرد نسخ vmx و vmdk من ويندوز لينكس. ربما مختلفة في العالم virtualbox ، ولكن أشك في ذلك! ما هو أسهل؟ نسخ ملف أو العبث مع vagrantfiles وعدد لا يحصى من المشاكل التي يمكن أن تذهب الخطأ؟ - hopeseekr
لوضع نقطة أكثر دقة عليه ، يمكن اعتبار Vagrant كلغة تعريف افتراضية يمكن أن تصف خصائص آلة افتراضية - مستقلة عما إذا كانت مستضافة ضمن VirtualBox أو VMware أو Parallels أو ماذا يكون لديك. انظر كيف أن Vagrant ليس "منافسة على" VirtualBox ، ولكنه يعمل معه ، أو أبعد من ذلك. - MarkHu
عادةً ما يستخدم المرء Vagrantfile لوصف كيفية إعداد جهاز ظاهري لمشروع ما - فسيكون Vagrantfile ملتزمًا بالتحكم في المصدر (git ، الخ) مع المشروع ، للمشاركة على GitHub ، وما إلى ذلك. من VMDK بأكمله. - Ben XO


Vagrant تلخيص الأجهزة الظاهرية بحيث يسمح لك بسهولة تبديل تطبيقات الجهاز الظاهري. يمكنك التبديل من Virtual Box إلى AWS أو Digital Ocean. يشبه استخدام لغة SQL بدلاً من لغة استعلام خاصة بقاعدة البيانات.

يسمح Vagrant للمطورين بإعداد بيئتهم بسرعة باستخدام أمر واحد فقط وهو نفس الشيء تمامًا مثل أي شخص آخر. هذا أمر مهم في الشركات الكبيرة حيث يأتي المطورون ويذهبون باستمرار. يمكن أن يقلل الوقت اللازم للإعداد من 3 أيام إلى ساعة واحدة.

+ ما قاله آدم.

(ما زلت لم أجد استخدام الشيف أو الدمى رغم ذلك ...)


0
2018-03-29 01:58