Vagrant Up i irytujące pytanie o hasło NFS

18

Przepraszam za błędy językowe, które popełniłem. Próbuję zapobiec błędnemu pytaniu o hasło podczas montowania folderów współdzielonych przez NFS:

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

Mam wiele zasobów internetowych, takich jak github i inne posty autora, ale nic nie działa dla mnie ...

Próbowałem znaleźć instrukcje tutaj . Nie mam głębokiej wiedzy praktycznej. Czy ktoś mógłby podać prawidłowe rozwiązanie mojego problemu?

Timur Fajzrakhmanov
źródło
Czy mogę uprzejmie poprosić o otrzymanie zaakceptowanej odpowiedzi, skoro została ona opisana w Vagrant docs?
Taytay,
Przede wszystkim musisz sprawdzić, czy usługa jest nfs-serverzainstalowana na twoim komputerze.
Gambit,

Odpowiedzi:

32

Oficjalne dokumenty Vagrant obejmują teraz to: https://www.vagrantup.com/docs/synced-folders/nfs.html#root-privilege-requirement

Musisz dodać wpisy do /etc/sudoerspliku, a sposobem edycji jest wpisanie tego w terminalu:sudo visudo

Wpisz hasło i edytujesz plik. Będziesz chciał wkleić te linie poniżej (w zależności od tego, czy korzystasz z Vagrant na OS X czy Linux).

Jeśli nie znasz vima , w którym się otwiera, ta strona pomogła . Zasadniczo skopiuj odpowiedni blok tekstu poniżej. Następnie w visudo przejdź do miejsca, w którym chcesz wkleić tekst do pliku (koniec pliku jest w porządku) i naciśnij „i”, aby przejść do trybu wstawiania. CMD + V, aby wkleić tekst. Następnie naciśnij ESC, następnie wpisz, :waby zapisać zmiany, a następnie :qwyjść.

Od wersji 1.7.3 plik sudoers w systemie OS X powinien zawierać następujące wpisy:

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

Linux powinien mieć następujące wpisy:

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

Pamiętaj, że zmieniają się one z jednej wersji Vagrant na inną, więc powyższe może być nieaktualne. Ważną rzeczą jest to, że dokumenty obejmują to teraz.

Taytay
źródło
Dziwnie to nie działa dla mnie, chociaż /var/log/auth.logzawiera tylko polecenia, które są tam wymienione i mogę ręcznie sprawdzić, czy uprawnienia sudo działają.
Tgr
1
Zamiast edytować główny plik sudoers, polecam dodanie go jako nowego pliku, /etc/sudoers.daby uniknąć przyszłych konfliktów podczas aktualizacji systemu operacyjnego. W systemie Ubuntu: sudo visudo -f /etc/sudoers.d/vagrant-nfslub OSX:sudo visudo -f /private/etc/sudoers.d/vagrant-nfs
Emil Vikström,
1
To pomogło, dziękuję! Tylko szybki komentarz do rady obejść vim edytora: wystarczy otworzyć visudo z sudo EDITOR=nano visudopolecenia, który pozwala na ominięcie vim całkowicie.
Petr Cibulka,
2

Dokładne polecenia mogą się zmieniać między wersjami Vagrant, więc nie można wymienić tych, które zawsze by działały.

W każdym razie zasady sudoersów w tym gistzie powinny być jeszcze dość blisko. Sprawdź /var/log/auth.log, czy ujawnia rzeczywiste polecenia twojej wersji Vagrant i odpowiednio dostosuj reguły.

Tmatilai
źródło
Dzięki, ale już dawno wypróbowałem to rozwiązanie - dla mnie nie działa.
Timur Fayzrakhmanov
2

Dla każdego, kto robi to dla OSX (korzystam z systemu MacOS Sierra w wersji 10.12.6) miałem problemy z uprawnieniami, nawet po dodaniu tych wierszy. Ten post naprawdę pomógł:

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

Zasadniczo jest to fakt, że sam nie masz ustawionych uprawnień do tego folderu. Musisz więc uruchomić:

sudo chmod +a "$USER allow write,append" /etc/hosts
Ruben Arevalo
źródło
1

dodanie , nfs_export: falsena końcu linii config.vm.synced_folderw Vagrantfile rozwiązało to dla mnie.

Jeśli masz już działającą konfigurację nfs i nie potrzebujesz, aby Vagrant nadpisywał ją przy każdym uruchomieniu, możesz po prostu wyłączyć zapisywanie do pliku eksportu.

To także rozwiązuje problem kolizji, jeśli masz więcej niż jednego Vagranta próbującego uzyskać dostęp do tego samego folderu, ponieważ na przykład masz 2 prawie identyczne Vagrant, jeden z uruchomionym php 5.6 i jeden z uruchomionym php 7.2.

Puggan Se
źródło
0

TL&DR: Dodaj następujący override.vm.synced_folder „.”, „/ Vagrant”, wyłączony: true

Racjonalny: Domyślnie Vagrant próbuje wykryć dowolne foldery NFS / SMB. Chociaż rozumiem, dlaczego programiści dodali tę funkcję, dla mojego przypadku użycia jest to bardzo denerwujące. Rozwiązaniem jest po prostu WYŁĄCZ synchronizację folderów NFS.

Można to zrobić, zastępując opcję folderu synchronizowanego maszyny wirtualnej. Dołączyłem poniższą konfigurację dla cyfrowego oceanu, abyś mógł zobaczyć całą konfigurację.

 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
FlyingV
źródło
Uwielbiam ludzi z „TL&DR”! Twoje zdrowie.
Luis Milanese
1
Dzięki! Nie zapomnij głosować;)
FlyingV
Z powodu twojego „TL&DR” zasługujesz na wszystkie opinie, jakie można uzyskać, ale prawda jest taka, że ​​twoja odpowiedź mi nie pomogła. Nie dlatego, że to nie jest dobre, ale problem, który miałem, był nieco inny niż ten, o który pytano w pierwszej kolejności. Mimo to dziękuję za dobre podejście. :)
Luis Milanese