سؤال

أواجه مشكلة غريبة مع (إعادة) تعبئة صندوق Vagrant وآمل أن يخبرني شخص ما في أي اتجاه يجب أن أنظر.هذه هي القصة

  • لقد قمت بتثبيت Vagrant ونجحت في إنشاء بعض بيانات الدمى وكل شيء يعمل بشكل جيد، vagrant up...التزويد، ...
  • ثم كنت بحاجة إلى التبديل إلى NFS والذي فشل لأنه لم يتم تثبيت nfs على نظام التشغيل Guest (Ubuntu 11.04-amd64)
  • لقد قمت بتثبيت nfs-common على نظام التشغيل الضيف (sudo apt-get install nfs-common)
  • vagrant halt
  • vagrant up
  • ويعمل حامل NFS بشكل لا تشوبه شائبة، حتى بعد عدة أوامر توقف/أعلى، أنا سعيد!

ستكون الخطوة المنطقية التالية هي تعبئة الصندوق بحيث لا أحتاج إلى إعادة تثبيت nfs-common في كل مرة يتم فيها تدمير الجهاز الافتراضي.

  • في نفس الدليل كما هو موضح أعلاه: vagrant package
  • vagrant box add ubuntuvm2 package.box
  • rm package.box
  • تغيير الخط config.vm.box في Vagrantfile إلى ubuntuvm2
  • vagrant destroy
  • vagrant up
  • وفجأة يفشل تثبيت nfs، عند الدخول إلى VM، يمكنني التأكد من تثبيت nfs-common بالفعل ولكن تثبيت NFS يفشل: https://img.skitch.com/20120302-kwix296t44y31rxkd52pwm72f4.jpg

هل لدى أي شخص فكرة في أي اتجاه لبدء البحث عن حل؟

أنا أستخدم Virtualbox 4.1.8 وVagrant 1.0.0 على OS-X Lion

هل كانت مفيدة؟

المحلول

لقد واجهت نفس المشكلة تمامًا، لكنني اكتشفت ذلك.على الأقل يعمل بالنسبة لي الآن.:)

ليرة تركية؛دكتور:

  • تحقق من /etc/exports بحثًا عن أخطاء في بناء الجملة وأعد إنشاء /etc/exports باستخدام إدخال تأكد من أنه يعمل.
  • تحقق من تهيئة واجهات الشبكة الموجودة في المربع بشكل صحيح (تحقق من /etc/network/interfaces وقم بتشغيل ifconfig -a).
  • يقوم Debian وUbuntu على الأقل بتخزين معلومات حول جهاز الشبكة المستمر في /etc/udev/rules.d/70-persistent-net.rules.إذا رأيت أن eth1 تمت تهيئته كـ eth2 فذلك بسبب إعادة إنشاء عنوان mac الخاص ببطاقة الشبكة عند إنشاء مثيل صندوق جديد.rm /etc/udev/rules.d/70-persistent-net.rules وأعد تعبئة الصندوق الخاص بك.
  • إذا لم تتمكن من إعادة حزم تحديث الصندوق الخاص بك /etc/network/interfaces لاستخدام eth2 instad من eth1

وثيقةطويلة:

  • المتشرد هو 1.0.1
  • نظام التشغيل X هو 10.7.3
  • الصندوق مخصص لـ Debian Wheezy 64.

عند إعادة تحميل الصندوق أو إعادة إنشائه، فإنه سيموت عند تثبيت NFS مع الرسالة النموذجية.

[default] Mounting NFS shared folders...
Mounting NFS shared folders failed. This is most often caused by the NFS
client software not being installed on the guest machine. Please verify
that the NFS client software is properly installed, and consult any resources
specific to the linux distro you're using for more information on how to
do this.

فحص الملف /etc/exports باستخدام مدير NFS يخبرني أن /etc/exports يحتوي على أخطاء في بناء الجملة.

أقوم بتنظيف /etc/exports واختبار عميل وخادم nfs باستخدام هذا الإدخال:

/Users/tm/git -alldirs localhost 33.33.33.10

عند تشغيل المتشرد، يعمل تركيب NFS مرة أخرى.

عند إعادة تعبئة الصندوق بعد apt-get dist-upgrade لاحظت أن مجلدات NFS لن يتم تحميلها مرة أخرى.

هذه المرة لم تكن هناك أخطاء في ملف /etc/exports.لقد اكتشفت أن Vagrant لم يقم بتهيئة الواجهة المحلية للمضيف.

/etc/network/interfaces يحتوي على هذا:

#VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
auto eth1
iface eth1 inet static
    address 33.33.33.10
    netmask 255.255.255.0
#VAGRANT-END

ifconfig -a أعاد هذا:

eth0      Link encap:Ethernet  HWaddr 08:00:27:3a:47:72  
      inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
      inet6 addr: fe80::a00:27ff:fe3a:4772/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:971 errors:0 dropped:0 overruns:0 frame:0
      TX packets:614 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:83951 (81.9 KiB)  TX bytes:74872 (73.1 KiB)

eth2      Link encap:Ethernet  HWaddr 08:00:27:89:f5:e3  
      BROADCAST MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

لم يتم تعريف الواجهة بشكل صحيح.بعد تحديث مقطع /etc/network/intefaces لاستخدام eth2 NFS، يعمل التثبيت مرة أخرى.

نصائح أخرى

إليك خطأ مفتوح حول هذا الأمر والحل:

https://github.com/mitchellh/vagrant/issues/997

  1. يحرر /etc/udev/rules.d/70-persistent-net.rules وحذف الأسطر للواجهات بخلاف eth0
  2. vagrant package
  3. vagrant box add mypack package.box
  4. vagrant destroy
  5. في Vagrantfile تعيين config.vm.box ل mypack
  6. vagrant up

لقد اختبرت هذا على نظام التشغيل MAC OS X 10.7.5 وCentOS 6.2 64 بت

تحديث: تم إغلاق الخطأ الآن و انتقل ولكن يبدو أن الناس ما زالوا يواجهون المشكلة.

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

إذا كنت تستخدم NoobProof و/أو IceFloor، فقم بتعطيل جدار الحماية أو قم بإجراء الاستثناءات المناسبة.

على مضيف Ubuntu 12/Ubuntu 12 Guest، نجح ما يلي في الخطاب

nfs_setting = RUBY_PLATFORM =~ /darwin/ || RUBY_PLATFORM =~ /linux/
config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", type: "nfs", nfs_udp: "true", nfs_version: "4", :nfs => nfs_setting

ملحوظة؛اضطررت أيضًا إلى إضافة عنوان IP المضيف الذي يحدده vagrant وضيف IP الذي يحدده Vagrant إلى استثناءات جدار الحماية

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top