Vagrant Up e fastidiosa richiesta di password NFS


18

Ci scusiamo per gli errori di lingua che ho fatto. Sto cercando di impedire a Vagrant di chiedere la password quando monta le cartelle condivise da NFS:

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

Ho rosso molte risorse online come Github e i post di altri autori, ma niente funziona per me ...

Ho provato che le istruzioni sono state trovate qui . Non ho una profonda conoscenza lavorativa del cli. Qualcuno potrebbe dare la soluzione corretta al mio problema?


Potrei richiedere gentilmente di avere la risposta accettata ora che questa è stata trattata nei documenti di Vagrant?
Taytay,

Prima di tutto devi controllare che il servizio sia nfs-serverinstallato sul tuo computer.
Gambit

Risposte:


32

I documenti ufficiali di Vagrant ora trattano questo: https://www.vagrantup.com/docs/synced-folders/nfs.html#root-privilege-requirement

È necessario aggiungere voci al /etc/sudoersfile e il modo per modificarlo è quello di digitare questo al terminale:sudo visudo

Digita la password e stai modificando il file. Ti consigliamo di incollare queste righe di seguito (a seconda che tu stia eseguendo Vagrant su OS X o Linux.

Se non hai familiarità con vim , in cui si apre, questa pagina ti è stata di aiuto . Fondamentalmente, copia il blocco di testo appropriato di seguito. Quindi, in visudo, vai nel punto in cui desideri incollare il testo nel file (la fine del file va bene) e premi "i" per entrare nella modalità di inserimento. CMD + V per incollare il testo. Quindi, premi ESC, quindi digita :wper salvare le modifiche e poi :qper uscire.

A partire dalla versione 1.7.3 , il file sudoers in OS X dovrebbe avere queste voci:

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

E Linux dovrebbe avere queste voci:

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

Nota che questi cambiano da una versione di Vagrant a un'altra, quindi quanto sopra potrebbe essere obsoleto. L'importante è che ora i documenti lo coprano.


Stranamente questo non funziona per me, anche se /var/log/auth.logcontiene solo comandi che sono elencati lì e posso verificare manualmente che le autorizzazioni sudo funzionino.
Tgr

1
Invece di modificare il file principale sudoers, consiglio di aggiungere questo come nuovo file /etc/sudoers.dper evitare conflitti futuri durante l'aggiornamento del sistema operativo. Su Ubuntu: sudo visudo -f /etc/sudoers.d/vagrant-nfso OSX:sudo visudo -f /private/etc/sudoers.d/vagrant-nfs
Emil Vikström,

1
Questo ha aiutato, grazie! Solo un breve commento ai tuoi consigli per aggirare l' editor di vim : apri visudo con il sudo EDITOR=nano visudocomando, che ti permette di bypassare completamente vim .
Petr Cibulka,

2

I comandi esatti possono cambiare tra le versioni di Vagrant, quindi è impossibile elencare quelli che funzionerebbero sempre.

Ad ogni modo, le regole dei sudoers in questo senso dovrebbero essere ancora abbastanza vicine. Controlla /var/log/auth.log se rivela i comandi effettivi per la tua versione di Vagrant e adatta le regole di conseguenza.


Grazie, ma ho provato questa soluzione molto tempo fa - non funziona per me.
Timur Fayzrakhmanov,

2

Per chiunque lo faccia per OSX (sono su MacOS Sierra versione 10.12.6) ho avuto delle difficoltà con le autorizzazioni anche dopo aver aggiunto quelle righe. Questo post ha davvero aiutato:

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

Fondamentalmente è il fatto che non hai impostato le autorizzazioni per quella cartella. Quindi devi eseguire:

sudo chmod +a "$USER allow write,append" /etc/hosts

1

aggiungendo , nfs_export: falsealla fine delle config.vm.synced_folderlinee nel Vagrantfile, l'ho risolto per me.

Se hai già un nfs-config funzionante e non hai bisogno che il tuo Vagrant lo sovrascriva ogni volta che inizi, puoi semplicemente disabilitare la scrittura nel file di esportazione.

Questo risolve anche il problema della collisione, se hai più di un Vagrant che prova ad accedere alla stessa cartella, come ad esempio hai 2 Vagrants quasi identici, uno con php 5.6 e uno con php 7.2.


0

TL&DR: aggiungi il seguente override.vm.synced_folder ".", "/ Vagrant", disabilitato: true

Razionale: per impostazione predefinita, Vagrant tenta di rilevare eventuali cartelle NFS / SMB. Mentre posso capire perché gli sviluppatori hanno aggiunto questa funzionalità, per il mio caso d'uso questo è molto fastidioso. La soluzione è semplicemente DISATTIVARE la sincronizzazione delle cartelle NFS.

Questo può essere fatto sovrascrivendo l'opzione della cartella sincronizzata della VM. Ho allegato la seguente configurazione per digital ocean per la tua considerazione, in modo da poter vedere l'intera configurazione.

 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

Devi amare le persone "TL&DR"! Saluti.
Luis Milanese,

1
Grazie! Non dimenticare di votare;)
FlyingV

A causa del tuo "TL&DR" ti meriti tutti i voti che si possono ottenere, ma la verità è che la tua risposta non mi ha aiutato. Non perché non sia buono, ma il problema che stavo avendo era leggermente diverso da quello che mi è stato chiesto in primo luogo. Tuttavia, grazie per il tuo buon atteggiamento. :)
Luis Milanese,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.