Désolé pour les erreurs de langue que j'ai faites. J'essaie d'empêcher vagrant 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 consulté de nombreuses ressources en ligne, comme github et d'autres publications d'auteurs, mais rien ne fonctionne pour moi ...
J'ai essayé les instructions a été trouvé ici . Je n'ai pas de connaissance approfondie de la CLI. Alors, est-ce que quelqu'un pourrait donner une solution correcte à mon problème?
La documentation officielle de Vagrant couvre maintenant ceci: https://www.vagrantup.com/docs/synced-folders/nfs.html#root-privilege-requirement
Vous devez ajouter des entrées dans le fichier /etc/sudoers
et la façon de l'éditer consiste à la saisir au terminal: Sudo visudo
Tapez votre mot de passe et vous modifiez le fichier. Vous voudrez coller ces lignes ci-dessous (selon que vous utilisez Vagrant sous OS X ou Linux.
Si vous n'êtes pas familier avec vim , dans lequel il s'ouvre, cette page 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 convient), et appuyez sur "i" pour passer en mode insertion. CMD + V pour coller votre texte. Ensuite, appuyez sur Echap, puis tapez :w
pour enregistrer vos modifications, puis :q
pour quitter.
À partir de la version 1.7.3 , le fichier sudoers sous OS X devrait contenir les entrées suivantes:
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, de sorte que ce qui précède peut être obsolète. L'important est que la documentation le couvre maintenant.
Pour ceux qui le font pour OSX (je suis sous MacOS Sierra version 10.12.6), j'ai eu du mal à obtenir des autorisations même après avoir ajouté ces lignes. Ce post a vraiment aidé:
https://github.com/cogitatio/vagrant-hostsupdater/issues/50
En gros, c’est le fait que vous n’avez pas d’autorisations définies vous-même pour ce dossier. Donc, vous devez exécuter:
Sudo chmod +a "$USER allow write,append" /etc/hosts
Les commandes exactes pouvant changer d'une version à l'autre de Vagrant, il est donc impossible de répertorier celles qui fonctionneraient toujours.
Quoi qu'il en soit, les règles sudoers dans this Gist 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.
l'ajout de , nfs_export: false
à la fin des config.vm.synced_folder
- dans le fichier Vagrant, a résolu le problème pour moi.
Si vous avez déjà une nfs-config en marche et que vous n'avez pas besoin de votre Vagrant pour l'écraser à 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 deux Vagrants presque identiques, un php 5.6 et un php 7.2.
TL & DR: Ajoutez les éléments suivants override.vm.synced_folder ".", "/ Vagrant", disabled: true
Rational: Par défaut, le vagabond tente de détecter les dossiers NFS/SMB. Bien que je puisse comprendre pourquoi les développeurs ont ajouté cette fonctionnalité, cela est très gênant pour mon cas d'utilisation. La solution consiste simplement à DÉSACTIVER la synchronisation de dossiers NFS.
Cela peut être fait en remplaçant l'option de dossier synchronisé VM. J'ai joint la configuration suivante pour Digital Ocean à votre attention, afin que vous puissiez voir la configuration complète.
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