Vagrant Up e pergunta irritante da senha do NFS

18

Desculpe pelos erros de linguagem que cometi. Estou tentando impedir que vagrant solicite a senha ao montar pastas compartilhadas pelo NFS:

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

Eu tenho muitos recursos on-line, como o github e as postagens de outros autores, mas nada funciona para mim ...

Eu tentei as instruções foram encontradas aqui . Eu não tenho um conhecimento profundo do cli. Alguém poderia dar a solução correta para o meu problema?

Timur Fayzrakhmanov
fonte
Eu poderia solicitar a resposta aceita agora que isso foi abordado nos documentos do Vagrant?
Taytay
Antes de tudo, você precisa verificar o serviço nfs-serverinstalado em sua máquina.
Gambit

Respostas:

32

Os documentos oficiais do Vagrant agora cobrem isso: https://www.vagrantup.com/docs/synced-folders/nfs.html#root-privilege-requirement

Você precisa adicionar entradas ao /etc/sudoersarquivo e a maneira de editar isso é digitar isso no terminal:sudo visudo

Digite sua senha e você estará editando o arquivo. Você deseja colar essas linhas abaixo (dependendo de estar executando o Vagrant no OS X ou Linux.

Se você não estiver familiarizado com o vim , que é aberto, esta página ajudou . Basicamente, copie o bloco de texto apropriado abaixo. Em seguida, no visudo, vá para o local em que deseja colar o texto no arquivo (o final do arquivo está correto) e pressione "i" para entrar no modo de inserção. CMD + V para colar seu texto. Em seguida, pressione ESC e digite :wpara salvar suas alterações e :qsair.

A partir da versão 1.7.3 , o arquivo sudoers no OS X deve ter as seguintes 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

E o Linux deve ter 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

Observe que eles mudam de uma versão do Vagrant para outra, portanto, as opções acima podem estar desatualizadas. O importante é que os documentos agora o abordem.

Taytay
fonte
Estranhamente, isso não está funcionando para mim, embora /var/log/auth.logapenas contenha comandos listados lá e posso verificar manualmente se as permissões do sudo estão funcionando.
Tgr
1
Em vez de editar o arquivo principal do sudoers, recomendo adicioná-lo como um novo arquivo /etc/sudoers.dpara evitar conflitos futuros ao atualizar o sistema operacional. No Ubuntu: sudo visudo -f /etc/sudoers.d/vagrant-nfsou OSX:sudo visudo -f /private/etc/sudoers.d/vagrant-nfs
Emil Vikström
1
Isso ajudou, obrigado! Apenas um comentário rápido ao seu conselho para contornar o editor do vim : basta abrir o visudo com o sudo EDITOR=nano visudocomando, que permite ignorar o vim completamente.
Petr Cibulka
2

Os comandos exatos podem mudar entre as versões do Vagrant, por isso é impossível listar os que sempre funcionariam.

Enfim, as regras dos sudoers nessa essência ainda devem estar bem próximas. Confira /var/log/auth.log se ele revelar os comandos reais da sua versão do Vagrant e adapte as regras de acordo.

tmatilai
fonte
Obrigado, mas eu tentei esta solução há muito tempo - ela não funciona para mim.
Timur Fayzrakhmanov
2

Para qualquer pessoa que faça isso no OSX (eu estou no MacOS Sierra versão 10.12.6), tive dificuldades com as permissões, mesmo depois de adicionar essas linhas. Este post realmente ajudou:

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

Basicamente, é o fato de você não ter permissões definidas para essa pasta. Então você precisa executar:

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

adicionando , nfs_export: falseno final doconfig.vm.synced_folder linhas no arquivo Vagrant, resolvi isso para mim.

Se você já possui um nfs-config funcional e não precisa do seu Vagrant sobrescrevê-lo toda vez que iniciar, basta desativar a gravação no arquivo de exportação.

Isso também resolve o problema da colisão, se você tiver mais de um Vagrant tentando acessar a mesma pasta, como por exemplo, dois Vagrants quase idênticos, um executando o php 5.6 e outro executando o php 7.2.

Puggan Se
fonte
0

TL&DR: adicione o seguinte override.vm.synced_folder ".", "/ Vagrant", desativado: true

Racional: Por padrão, o Vagrant tenta detectar qualquer pasta NFS / SMB. Embora eu possa entender por que os desenvolvedores adicionaram esse recurso, para o meu caso de uso isso é muito irritante. A solução é simplesmente DESATIVAR a sincronização de pastas NFS.

Isso pode ser feito substituindo a opção de pasta sincronizada da VM. Anexei a seguinte configuração para o oceano digital para sua consideração, para que você possa ver toda a configuração.

 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
fonte
Conseguiu amar as pessoas "TL&DR"! Felicidades.
Luis Milanese
1
Obrigado! Não se esqueça de votar;)
FlyingV
Por causa do seu "TL&DR", você merece todos os votos positivos que conseguir, mas a verdade é que sua resposta não me ajudou. Não porque não é bom, mas o problema que eu estava tendo era um pouco diferente do que foi perguntado em primeiro lugar. Ainda assim, obrigado por sua boa atitude. :)
Luis Milanese