Vagabundo Up y molesto NFS contraseña pidiendo

18

Perdón por los errores de idioma que he cometido. Estoy tratando de evitar que vagabundo solicite la contraseña cuando NFS monta carpetas compartidas:

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

He seleccionado muchos recursos en línea como Github y otras publicaciones de autores, pero nada funciona para mí ...

Intenté que las instrucciones se encontraran aquí . No tengo un profundo conocimiento de trabajo. Entonces, ¿alguien podría dar la solución correcta para mi problema?

Timur Fayzrakhmanov
fuente
¿Podría solicitar amablemente tener la respuesta aceptada ahora que esto se ha cubierto en los documentos de Vagrant?
Taytay el
En primer lugar, debe verificar si el servicio está nfs-serverinstalado en su máquina.
Gambito del

Respuestas:

32

Los documentos oficiales de Vagrant ahora cubren esto: https://www.vagrantup.com/docs/synced-folders/nfs.html#root-privilege-requirement

Debe agregar entradas al /etc/sudoersarchivo, y la forma de editarlo es escribir esto en la terminal:sudo visudo

Escriba su contraseña y está editando el archivo. Deberá pegar estas líneas a continuación (dependiendo de si está ejecutando Vagrant en OS X o Linux.

Si no está familiarizado con vim , que se abre, esta página le ayudó . Básicamente, copie el bloque de texto apropiado a continuación. Luego, en visudo, vaya al lugar donde desea pegar el texto en el archivo (el final del archivo está bien) y presione "i" para pasar al modo de inserción. CMD + V para pegar su texto. Luego, presione ESC, luego escriba :wpara guardar sus cambios y luego :qpara salir.

A partir de la versión 1.7.3 , el archivo sudoers en OS X debe tener estas entradas:

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

Y Linux debería tener estas entradas:

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

Tenga en cuenta que estos cambian de una versión de Vagrant a otra, por lo que lo anterior puede estar desactualizado. Lo importante es que los documentos ahora lo cubren.

Taytay
fuente
Extrañamente, esto no funciona para mí, aunque /var/log/auth.logsolo contiene comandos que se enumeran allí y puedo verificar manualmente que los permisos de sudo funcionan.
Tgr
1
En lugar de editar el archivo sudoers principal, recomiendo agregarlo como un archivo nuevo /etc/sudoers.dpara evitar conflictos futuros al actualizar el sistema operativo. En Ubuntu: sudo visudo -f /etc/sudoers.d/vagrant-nfsu OSX:sudo visudo -f /private/etc/sudoers.d/vagrant-nfs
Emil Vikström
1
Esto ayudó, gracias! Solo un comentario rápido a su consejo para moverse por el editor vim : simplemente abra visudo con el sudo EDITOR=nano visudocomando, que le permite omitir vim por completo.
Petr Cibulka
2

Los comandos exactos pueden cambiar entre las versiones de Vagrant, por lo que es imposible enumerar los que siempre funcionarían.

De todos modos, las reglas de los sudoers en esta esencia deberían estar bastante cerca. Consulte /var/log/auth.log si revela los comandos reales para su versión de Vagrant y adapte las reglas en consecuencia.

tmatilai
fuente
Gracias, pero probé esta solución hace mucho tiempo, no me funciona.
Timur Fayzrakhmanov
2

Para cualquiera que esté haciendo esto para OSX (estoy en MacOS Sierra versión 10.12.6) tuve dificultades con los permisos incluso después de agregar esas líneas. Esta publicación realmente ayudó:

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

Básicamente es el hecho de que usted mismo no tiene permisos establecidos para esa carpeta. Entonces necesitas correr:

sudo chmod +a "$USER allow write,append" /etc/hosts
Rubén Arévalo
fuente
1

agregando , nfs_export: falseal final de las config.vm.synced_folderlíneas en el Vagrantfile, lo resolvió para mí.

Si ya tiene una nfs-config en funcionamiento y no necesita que su Vagrant la sobrescriba cada vez que inicie, puede deshabilitar la escritura en el archivo de exportación.

Esto también resuelve el problema de colisión, si tiene más de un Vagrant intentando acceder a la misma carpeta, como por ejemplo tiene 2 Vagrants casi idénticos, uno con php 5.6 y otro con php 7.2.

Puggan Se
fuente
0

TL&DR: Agregue la siguiente carpeta override.vm.synced_folder ".", "/ Vagrant", deshabilitado: verdadero

Racional: por defecto, el Vagrant intenta detectar cualquier carpeta NFS / SMB. Si bien puedo entender por qué los desarrolladores agregaron esta característica, para mi caso de uso esto es muy molesto. La solución es simplemente DESHABILITAR la sincronización de carpetas NFS.

Esto se puede hacer anulando la opción de carpeta sincronizada VM. He adjuntado la siguiente configuración para el océano digital para su consideración, para que pueda ver la configuración completa.

 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
fuente
¡Tengo que amar a la gente de "TL&DR"! Salud.
Luis Milanese
1
¡Gracias! No te olvides de votar;)
FlyingV
Debido a su "TL&DR" usted se merece todos los votos positivos que se pueden obtener, pero la verdad es que su respuesta no me ayudó. No porque no sea bueno, pero el problema que estaba teniendo era ligeramente diferente de lo que se preguntó en primer lugar. Aún así, gracias por tu buena actitud. :)
Luis Milanese