Vagrant Up und lästige NFS-Passwortabfrage

18

Entschuldigung für die Sprachfehler, die ich gemacht habe. Ich versuche zu verhindern, dass Vagabunden nach dem Kennwort fragen, wenn freigegebene Ordner von NFS bereitgestellt werden:

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

Ich habe viele Online-Ressourcen wie Github und Beiträge anderer Autoren gelesen, aber für mich funktioniert nichts ...

Ich habe versucht die Anleitung hier zu finden . Ich habe keine tiefgreifenden Kenntnisse. Könnte also jemand die richtige Lösung für mein Problem geben?

Timur Fayzrakhmanov
quelle
Könnte ich bitte darum bitten, die akzeptierte Antwort jetzt zu erhalten, da dies in den Vagrant-Dokumenten behandelt wurde?
Taytay
Zunächst müssen Sie überprüfen, ob der Dienst nfs-serverauf Ihrem Computer installiert ist.
Gambit

Antworten:

32

Die offiziellen Vagrant-Dokumente behandeln dies nun: https://www.vagrantup.com/docs/synced-folders/nfs.html#root-privilege-requirement

Sie müssen der /etc/sudoersDatei Einträge hinzufügen und diese über das Terminal eingeben:sudo visudo

Geben Sie Ihr Passwort ein und Sie bearbeiten die Datei. Sie sollten diese Zeilen unten einfügen (abhängig davon, ob Sie Vagrant unter OS X oder Linux ausführen).

Wenn Sie nicht mit vim vertraut sind , in dem es geöffnet wird, hat diese Seite geholfen . Kopieren Sie im Grunde den entsprechenden Textblock unten. Gehen Sie dann in visudo zu der Stelle, an der Sie Text in die Datei einfügen möchten (das Ende der Datei ist in Ordnung), und drücken Sie "i", um in den Einfügemodus zu wechseln. CMD + V, um Ihren Text einzufügen. Drücken Sie dann ESC und geben Sie ein :w, um Ihre Änderungen zu speichern und dann :qzu beenden.

Ab Version 1.7.3 sollte die sudoers-Datei in OS X folgende Einträge enthalten:

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

Und Linux sollte diese Einträge haben:

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

Beachten Sie, dass sich diese von einer Version von Vagrant zu einer anderen ändern, sodass die oben genannten möglicherweise veraltet sind. Das Wichtige ist, dass die Dokumente dies jetzt behandeln.

Taytay
quelle
Seltsamerweise funktioniert dies bei mir nicht, obwohl /var/log/auth.lognur die dort aufgelisteten Befehle enthalten sind und ich manuell überprüfen kann, ob die sudo-Berechtigungen funktionieren.
Tgr
1
Anstatt die Hauptdatei von sudoers zu bearbeiten, empfehle ich, diese als neue Datei hinzuzufügen /etc/sudoers.d, um zukünftige Konflikte beim Aktualisieren des Betriebssystems zu vermeiden. Auf Ubuntu: sudo visudo -f /etc/sudoers.d/vagrant-nfsoder OSX:sudo visudo -f /private/etc/sudoers.d/vagrant-nfs
Emil Vikström
1
Das hat geholfen, danke! Nur ein kurzer Kommentar zu Ihrem Rat, um sich in vim editor zurechtzufinden: Öffnen Sie einfach visudo mit sudo EDITOR=nano visudocommand, um vim vollständig zu umgehen .
Petr Cibulka
2

Die genauen Befehle können sich zwischen den Vagrant-Versionen ändern, so dass es unmöglich ist, diejenigen aufzulisten, die immer funktionieren würden.

Wie auch immer, die Sudoer-Regeln in diesem Kern sollten noch ziemlich eng sein. Sehen Sie in /var/log/auth.log nach, ob die tatsächlichen Befehle für Ihre Vagrant-Version angezeigt werden, und passen Sie die Regeln entsprechend an.

tmatilai
quelle
Danke, aber ich habe diese Lösung vor langer Zeit ausprobiert - sie funktioniert bei mir nicht.
Timur Fayzrakhmanov
2

Für alle, die dies für OSX tun (ich arbeite unter MacOS Sierra Version 10.12.6), fiel es mir schwer, Berechtigungen zu erhalten, selbst nachdem ich diese Zeilen hinzugefügt hatte. Dieser Beitrag hat wirklich geholfen:

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

Grundsätzlich ist es die Tatsache, dass Sie keine Berechtigungen für diesen Ordner selbst festgelegt haben. Also musst du laufen:

sudo chmod +a "$USER allow write,append" /etc/hosts
Ruben Arevalo
quelle
1

Hinzufügen , nfs_export: falseam Ende der config.vm.synced_folder-Linien in der Vagrantdatei, löste es für mich.

Wenn Sie bereits eine funktionierende NFS-Konfiguration haben und Ihr Vagrant diese nicht bei jedem Start überschreiben muss, können Sie das Schreiben in die Exportdatei einfach deaktivieren.

Dies löst auch das Kollisionsproblem, wenn Sie mehr als einen Vagrant haben, der versucht, auf denselben Ordner zuzugreifen, wie zum Beispiel 2 nahezu identische Vagrants, einen mit PHP 5.6 und einen mit PHP 7.2.

Puggan Se
quelle
0

TL & DR: Fügen Sie den folgenden override.vm.synced_folder ".", "/ Vagrant", disabled: true hinzu

Rational: Standardmäßig versucht der Vagrant, alle NFS / SMB-Ordner zu erkennen. Während ich verstehen kann, warum die Entwickler diese Funktion hinzugefügt haben, ist dies für meinen Anwendungsfall sehr ärgerlich. Die Lösung besteht darin, die NFS-Ordnersynchronisierung einfach zu deaktivieren.

Dies kann durch Überschreiben der Option "VM-synchronisierter Ordner" erreicht werden. Ich habe die folgende Konfiguration für Digital Ocean angehängt, damit Sie die gesamte Konfiguration sehen können.

 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
quelle
Muss ich lieben "TL & DR" Menschen! Prost.
Luis Milanese
1
Vielen Dank! Vergiss nicht zu stimmen;)
FlyingV
Wegen deiner "TL & DR" hast du alle möglichen Upvotes verdient, aber die Wahrheit ist, dass deine Antwort mir nicht geholfen hat. Nicht, weil es nicht gut ist, aber das Problem, das ich hatte, war etwas anders als das, was zuerst gefragt wurde. Trotzdem danke für deine gute Einstellung. :)
Luis Milanese