Mot de passe NFS Vagrant Up et ennuyeux

18

Désolé pour les erreurs de langue que j'ai commises. J'essaie d'empêcher vagabond de demander le mot de passe lorsqu'il monte des dossiers partagés par NFS:

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

J'ai redéfini de nombreuses ressources en ligne comme github et d'autres articles d'auteur, mais rien ne fonctionne pour moi ...

J'ai essayé les instructions ont été trouvées ici . Je n'ai pas de connaissances approfondies en cli. Quelqu'un pourrait-il donc donner une solution correcte à mon problème?

Timur Fayzrakhmanov
la source
Puis-je demander à avoir la réponse acceptée maintenant que cela a été couvert dans les documents Vagrant?
Taytay
Tout d'abord, vous devez vérifier si le service est nfs-serverinstallé sur votre machine.
Gambit

Réponses:

32

Les documents officiels de Vagrant couvrent désormais ceci: https://www.vagrantup.com/docs/synced-folders/nfs.html#root-privilege-requirement

Vous devez ajouter des entrées au /etc/sudoersfichier et la façon de le modifier consiste à le saisir sur le terminal:sudo visudo

Tapez votre mot de passe et vous modifiez le fichier. Vous voudrez coller ces lignes ci-dessous (selon que vous exécutez Vagrant sur OS X ou Linux.

Si vous n'êtes pas familier avec vim , dans lequel il s'ouvre, cette page vous a aidé . Fondamentalement, copiez le bloc de texte approprié ci-dessous. Ensuite, dans visudo, allez à l'endroit où vous souhaitez coller du texte dans le fichier (la fin du fichier est très bien), et appuyez sur "i" pour passer en mode insertion. CMD + V pour coller votre texte. Ensuite, appuyez sur ÉCHAP, puis tapez :wpour enregistrer vos modifications, puis :qpour quitter.

À partir de la version 1.7.3 , le fichier sudoers sous OS X devrait avoir ces entrées:

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

Et Linux devrait avoir ces entrées:

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

Notez que ceux-ci changent d'une version de Vagrant à une autre, donc ce qui précède peut être obsolète. L'important est que les documents le couvrent maintenant.

Taytay
la source
Bizarrement, cela ne fonctionne pas pour moi, même s'il /var/log/auth.logne contient que des commandes qui y sont répertoriées et que je peux vérifier manuellement que les autorisations sudo fonctionnent.
Tgr
1
Au lieu de modifier le fichier sudoers principal, je recommande de l'ajouter en tant que nouveau fichier /etc/sudoers.dpour éviter de futurs conflits lors de la mise à jour du système d'exploitation. Sur Ubuntu: sudo visudo -f /etc/sudoers.d/vagrant-nfsou OSX:sudo visudo -f /private/etc/sudoers.d/vagrant-nfs
Emil Vikström
1
Cela a aidé, merci! Juste un petit commentaire sur vos conseils pour contourner l' éditeur de vim : Ouvrez simplement visudo avec la sudo EDITOR=nano visudocommande, qui vous permet de contourner complètement vim .
Petr Cibulka
2

Les commandes exactes peuvent changer entre les versions de Vagrant, il est donc impossible de lister celles qui fonctionneraient toujours.

Quoi qu'il en soit, les règles sudoers dans cet esprit devraient être encore assez proches. Consultez /var/log/auth.log s'il révèle les commandes réelles de votre version de Vagrant et adaptez les règles en conséquence.

tmatilai
la source
Merci, mais j'ai essayé cette solution il y a longtemps - cela ne fonctionne pas pour moi.
Timur Fayzrakhmanov
2

Pour tous ceux qui font cela pour OSX (je suis sur MacOS Sierra version 10.12.6), j'ai eu du mal avec les autorisations même après avoir ajouté ces lignes. Ce message a vraiment aidé:

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

Fondamentalement, c'est le fait que vous n'avez pas d'autorisations définies pour ce dossier vous-même. Vous devez donc exécuter:

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

l'ajout , nfs_export: falseà la fin des config.vm.synced_folderlignes dans le Vagrantfile, l'a résolu pour moi.

Si vous avez déjà une configuration nfs fonctionnelle et que vous n'avez pas besoin que votre Vagrant l'écrase à chaque démarrage, vous pouvez simplement désactiver l'écriture dans le fichier d'exportation.

Cela résout également le problème de collision, si vous avez plus d'un Vagrant essayant d'accéder au même dossier, comme par exemple 2 Vagrants presque identiques, un exécutant php 5.6 et un exécutant php 7.2.

Puggan Se
la source
0

TL&DR: ajoutez le fichier override.vm.synced_folder suivant ".", "/ Vagrant", désactivé: vrai

Rationnel: Par défaut, le Vagrant essaie de détecter tous les dossiers NFS / SMB. Bien que je puisse comprendre pourquoi les développeurs ont ajouté cette fonctionnalité, pour mon cas d'utilisation, c'est très ennuyeux. La solution consiste à simplement désactiver la synchronisation des dossiers NFS.

Cela peut être fait en remplaçant l'option de dossier synchronisé VM. J'ai joint la configuration suivante pour l'océan numérique pour votre considération, afin que vous puissiez voir la configuration entière.

 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
la source
Je dois aimer les gens de "TL&DR"! À votre santé.
Luis Milanese
1
Merci! N'oubliez pas de voter;)
FlyingV
En raison de votre "TL&DR", vous méritez toutes les voix positives que vous pouvez obtenir, mais la vérité est que votre réponse ne m'a pas aidé. Non pas parce que ce n'est pas bon, mais le problème que j'ai rencontré était légèrement différent de ce qui avait été demandé en premier lieu. Encore merci pour votre bonne attitude. :)
Luis Milanese