Vagrant Up ve sinir bozucu NFS şifre sorma


18

Yaptığım dil hataları için özür dilerim. Ben vagrant paylaşılan klasörleri NFS tarafından bağlandığında parola sormayı engellemeye çalışıyorum:

 [server] Exporting NFS shared folders...
 Preparing to edit /etc/exports. Administrator privileges will be required...
 [sudo] password for timur: #!!!

Github ve diğer yazarların gönderileri gibi birçok çevrimiçi kaynağı kırmızıya çevirdim, ancak benim için hiçbir şey işe yaramıyor ...

Ben burada talimatları bulundu bulundu . Derin bir çalışma bilgim yok. Peki sorunum için doğru çözümü veren var mı?


Bunun Vagrant belgelerinde ele alındığı için şimdi kabul edilen cevabı almanızı rica edebilir miyim?
Taytay

Öncelikle, nfs-servermakinenizde servis kurulu mu diye kontrol etmeniz gerekir .
Gambit

Yanıtlar:


32

Resmi Vagrant dokümanları şimdi bunu kapsıyor: https://www.vagrantup.com/docs/synced-folders/nfs.html#root-privilege-requirement

/etc/sudoersDosyaya girişler eklemeniz gerekir ve bunu düzenlemenin yolu bunu terminalde yazmaktır:sudo visudo

Parolanızı yazın, dosyayı düzenleyin. Bu satırları aşağıya yapıştırmak isteyeceksiniz (Vagrant'ı OS X veya Linux'ta çalıştırmanıza bağlı olarak.

Açıldığı vim'e aşina değilseniz , bu sayfa yardımcı oldu . Temel olarak, aşağıdaki uygun metin bloğunu kopyalayın. Ardından, visudo'da, metni dosyaya yapıştırmak istediğiniz noktaya gidin (dosyanın sonu iyidir) ve ekleme moduna geçmek için "i" tuşuna basın. Metninizi yapıştırmak için CMD + V. Ardından, ESC'ye basın, ardından :wdeğişikliklerinizi kaydetmek ve ardından :qçıkmak için yazın.

1.7.3 sürümünden itibaren, OS X'teki sudoers dosyası şu girişlere sahip olmalıdır:

Cmnd_Alias VAGRANT_EXPORTS_ADD = /usr/bin/tee -a /etc/exports
Cmnd_Alias VAGRANT_NFSD = /sbin/nfsd restart
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /usr/bin/sed -E -e /*/ d -ibak /etc/exports
%admin ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_EXPORTS_REMOVE

Ve Linux şu girişlere sahip olmalıdır:

Cmnd_Alias VAGRANT_EXPORTS_CHOWN = /bin/chown 0\:0 /tmp/*
Cmnd_Alias VAGRANT_EXPORTS_MV = /bin/mv -f /tmp/* /etc/exports
Cmnd_Alias VAGRANT_NFSD_CHECK = /etc/init.d/nfs-kernel-server status
Cmnd_Alias VAGRANT_NFSD_START = /etc/init.d/nfs-kernel-server start
Cmnd_Alias VAGRANT_NFSD_APPLY = /usr/sbin/exportfs -ar
%sudo ALL=(root) NOPASSWD: VAGRANT_EXPORTS_CHOWN, VAGRANT_EXPORTS_MV, VAGRANT_NFSD_CHECK, VAGRANT_NFSD_START, VAGRANT_NFSD_APPLY

Bunların Vagrant'ın bir sürümünden diğerine değiştiğini, bu nedenle yukarıdakilerin modası geçmiş olabileceğini unutmayın. Önemli olan, dokümanların şimdi onu örtmesidir.


/var/log/auth.logSadece orada listelenen komutları içermesine rağmen sudo izinlerinin çalıştığını elle doğrulayabilirim, garip bir şekilde bu benim için çalışmıyor.
Tgr

1
Ana sudoers dosyasını düzenlemek yerine /etc/sudoers.d, işletim sistemini güncellerken gelecekteki çakışmaları önlemek için bunu yeni bir dosya olarak eklemenizi öneririz . Ubuntu: sudo visudo -f /etc/sudoers.d/vagrant-nfsveya sudo visudo -f /private/etc/sudoers.d/vagrant-nfs
OSX'de

1
Bu yardımcı oldu, teşekkürler! Sadece tavsiye için hızlı comment etrafında almak için vim ile sadece açık visudo: editör sudo EDITOR=nano visudokomutu, baypas yapmanızı sağlar vim tamamen.
Petr Cibulka

2

Tam komutlar Vagrant sürümleri arasında değişebilir, bu nedenle her zaman işe yarayacak olanları listelemek imkansızdır.

Neyse, sudoers kuralları bu özünden oldukça yakın hala olmalıdır. Vagrant sürümünüz için gerçek komutları gösteriyorsa /var/log/auth.log dosyasına bakın ve kuralları buna göre uyarlayın.


Teşekkürler, ama bu çözümü uzun zaman önce denedim - bu benim için çalışmıyor.
Timur Fayzrakhmanov

2

OSX için bunu yapan herkes için (MacOS Sierra Sürüm 10.12.6'dayım) Bu satırları ekledikten sonra bile izinlerle zorlandım. Bu yayın gerçekten yardımcı oldu:

https://github.com/cogitatio/vagrant-hostsupdater/issues/50

Temelde bu klasör için kendiniz ayarlanmış izinlere sahip olmamanızdır. Yani koşmanız gerekiyor:

sudo chmod +a "$USER allow write,append" /etc/hosts

1

Vagrantfile'deki satırların , nfs_export: falsesonuna ekleyerek , config.vm.synced_folderbenim için çözdü.

Zaten çalışan bir nfs-config'iniz varsa ve Vagrant'ınızın her başlatıldığında üzerine yazmasını istemiyorsanız, dışa aktarma dosyasına yazmayı devre dışı bırakabilirsiniz.

Bu, aynı klasöre erişmeye çalışan birden fazla Vagrant varsa, örneğin 2 neredeyse aynı Vagrants, biri php 5.6 ve biri php 7.2 çalıştırıyorsa, bu da çarpışma sorununu çözer.


0

TL&DR: Aşağıdaki geçersiz kılmayı ekle. Vm.synced_folder ".", "/ Vagrant", devre dışı: true

Rasyonel: Vagrant varsayılan olarak herhangi bir NFS / SMB klasörünü algılamaya çalışır. Geliştiricilerin neden bu özelliği eklediğini anlayabiliyorum, ancak kullanım durumum için bu çok can sıkıcı. Çözüm NFS klasör senkronizasyonunu devre dışı bırakmaktır.

Bu, VM senkronize edilmiş klasör seçeneğinin geçersiz kılınmasıyla yapılabilir. Değerlendirmeniz için dijital okyanus için aşağıdaki yapılandırmayı ekledim, böylece tüm yapılandırmayı görebilirsiniz.

 config.vm.define "droplet1" do |config|
 config.vm.provider :digital_ocean do |provider, override|
    override.vm.synced_folder ".", "/vagrant", disabled: true
        override.ssh.private_key_path = '~/.ssh/id_rsa'
        override.vm.box = 'digital_ocean'=
        override.vm.box_url = "https://github.com/devopsgroup-io/vagrant- 
 digitalocean/raw/master/box/digital_ocean.box"
    override.nfs.functional = false
            provider.image = 'ubuntu-14-04-x64'
            provider.region = 'nyc1'
            provider.size = '512mb'
       end
      end
    end

"TL&DR" insanlarını sevmeliyim! Şerefe.
Luis Milanese

1
Teşekkürler! Upvote unutma;)
FlyingV

"TL&DR" nedeniyle kişinin alabileceği tüm oyları hak ediyorsun, ama gerçek şu ki cevabın bana yardımcı olmadı. İyi olmadığı için değil, ama sahip olduğum sorun ilk etapta sorulandan biraz farklıydı. Yine de, iyi tutumunuz için teşekkür ederim. :)
Luis Milanese
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.