Извините за языковые ошибки, которые я сделал. Я пытаюсь запретить vagrant спрашивать пароль, когда он монтирует общие папки по NFS:
[server] Exporting NFS shared folders...
Preparing to edit /etc/exports. Administrator privileges will be required...
[sudo] password for timur: #!!!
У меня есть много онлайн-ресурсов, таких как github и посты других авторов, но у меня ничего не работает ...
Я пытался инструкции были найдены здесь . У меня нет глубоких рабочих знаний. Так кто-нибудь может дать правильное решение для моей проблемы?
Официальные документы Vagrant теперь охватывают это: https://www.vagrantup.com/docs/synced-folders/nfs.html#root-privilege-requirement
Вам нужно чтобы добавить записи в файл /etc/sudoers
и способ редактирования, то есть набрать его на терминале: sudo visudo
Введите свой пароль, и вы редактируете файл. Вы можете вставить эти строки ниже (в зависимости от того, используете ли вы Vagrant в OS X или Linux.
Если вы не знакомы с vim , в котором он открывается, эта страница помогла . По сути, скопируйте соответствующий блок текста ниже. Затем, в visudo, перейдите к месту, куда вы хотите вставить текст в файл (конец файла в порядке), и нажмите «i ", чтобы перейти в режим вставки. CMD + V, чтобы вставить ваш текст. Затем нажмите ESC, затем введите :w
, чтобы сохранить изменения, а затем :q
, чтобы выйти.
Начиная с версии 1.7 .3 , файл sudoers в OS X должен иметь следующие записи:
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 должны быть следующие записи:
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
Обратите внимание, что они отличаются от одной версии Бродячим к другому, поэтому вышесказанное может быть устаревшим. Важно то, что документы теперь охватывают его.
Точные команды могут меняться между версиями Vagrant, поэтому невозможно перечислить те, которые будут работать всегда.
В любом случае, правила sudoers в , эта суть должна быть еще довольно близка. Проверьте /var/log/auth.log, показывает ли он фактические команды для вашей версии Vagrant и адаптируйте правила соответствующим образом.
Для тех, кто делает это для OSX (я на MacOS Sierra версии 10.12.6), у меня были трудности с разрешениями даже после добавления этих строк. Это сообщение действительно помогло:
https://github.com/cogitatio/vagrant-hostsupdater/issues/50
По сути, это тот факт, что у вас нет установленных прав доступа для этой папки. Итак, вам нужно запустить:
sudo chmod +a "$USER allow write,append" /etc/hosts
добавив , nfs_export: false
в конце config.vm.synced_folder
-линий в Vagrantfile, решил это для меня.
Если у вас уже есть работающий nfs-config, и вам не нужен Vagrant, чтобы перезаписывать его при каждом запуске, вы можете просто отключить запись в файл экспорта.
Это также решает проблему коллизий, если у вас есть более одного Vagrant, пытающегося получить доступ к одной и той же папке, например, у вас есть 2 почти идентичных Vagrant, один работает php 5.6 и один работает php 7.2.
TL & DR: добавить следующее override.vm.synced_folder ".", "/ Vagrant", отключено: true
Rational: по умолчанию Vagrant пытается обнаружить любую NFS / SMB папки. Хотя я могу понять, почему разработчики добавили эту функцию, для моего варианта использования это очень раздражает. Решение состоит в том, чтобы просто отключить синхронизацию папок NFS.
Это можно сделать, переопределив опцию синхронизированной папки VM. На ваше рассмотрение я приложил следующую конфигурацию для цифрового океана, чтобы вы могли увидеть всю конфигурацию.
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