Vagrant Up dan permintaan kata sandi NFS yang menjengkelkan

18

Maaf atas kesalahan bahasa yang saya buat. Saya mencoba untuk mencegah gelandangan meminta kata sandi ketika me-mount folder bersama oleh NFS:

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

Saya sudah merah banyak sumber daya online seperti github dan posting penulis lain, tetapi tidak ada yang berhasil untuk saya ...

Saya mencoba petunjuknya ditemukan di sini . Saya tidak memiliki pengetahuan yang mendalam tentang pekerjaan. Jadi, adakah yang bisa memberikan solusi yang tepat untuk masalah saya?

Timur Fayzrakhmanov
sumber
Bisakah saya dengan ramah meminta jawaban yang diterima sekarang karena hal ini telah dicakup dalam dokumen Vagrant?
Taytay
Pertama-tama Anda perlu memeriksa apakah layanan nfs-serverterpasang pada mesin Anda.
Gambit

Jawaban:

32

Dokumen resmi Vagrant sekarang mencakup ini: https://www.vagrantup.com/docs/synced-folders/nfs.html#root-privilege-requirement

Anda perlu menambahkan entri ke /etc/sudoersfile, dan cara mengeditnya adalah dengan mengetik ini di terminal:sudo visudo

Ketikkan kata sandi Anda, dan Anda sedang mengedit file. Anda ingin menempelkan baris-baris ini di bawah (tergantung apakah Anda menjalankan Vagrant di OS X atau Linux.

Jika Anda tidak terbiasa dengan vim , yang terbuka, halaman ini membantu . Pada dasarnya, salin blok teks yang sesuai di bawah ini. Kemudian, dalam visudo, pergi ke tempat Anda ingin menempelkan teks ke dalam file (akhir file baik-baik saja), dan tekan "i" untuk masuk ke mode insert. CMD + V untuk menempelkan teks Anda. Lalu, tekan ESC, lalu ketik :wuntuk menyimpan perubahan Anda dan kemudian :quntuk berhenti.

Pada versi 1.7.3 , file sudoers di OS X harus memiliki entri ini:

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

Dan Linux harus memiliki entri ini:

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

Perhatikan bahwa perubahan ini dari satu versi Vagrant ke versi lain, jadi versi di atas mungkin sudah usang. Yang penting adalah bahwa dokumen sekarang menutupinya.

Taytay
sumber
Anehnya ini tidak bekerja untuk saya, meskipun /var/log/auth.loghanya berisi perintah yang terdaftar di sana dan saya dapat secara manual memverifikasi bahwa izin sudo berfungsi.
Tgr
1
Alih-alih mengedit file sudoers utama saya sarankan menambahkan ini sebagai file baru /etc/sudoers.duntuk menghindari konflik di masa depan saat memperbarui OS. Di Ubuntu: sudo visudo -f /etc/sudoers.d/vagrant-nfsatau OSX:sudo visudo -f /private/etc/sudoers.d/vagrant-nfs
Emil Vikström
1
Ini membantu, terima kasih! Hanya komentar cepat untuk saran Anda untuk berkeliling editor vim : Cukup buka visudo dengan sudo EDITOR=nano visudoperintah, yang memungkinkan Anda untuk memotong vim sepenuhnya.
Petr Cibulka
2

Perintah yang tepat dapat berubah di antara versi Vagrant, jadi tidak mungkin untuk membuat daftar yang akan selalu berfungsi.

Bagaimanapun, aturan sudoers dalam inti ini harus tetap cukup dekat. Periksa /var/log/auth.log jika itu mengungkapkan perintah sebenarnya untuk versi Vagrant Anda dan sesuaikan aturannya.

tmatilai
sumber
Terima kasih, tetapi saya sudah mencoba solusi ini sejak lama - itu tidak berhasil untuk saya.
Timur Fayzrakhmanov
2

Bagi siapa pun yang melakukan ini untuk OSX (Saya menggunakan MacOS Sierra Versi 10.12.6) Saya mengalami kesulitan dengan izin bahkan setelah menambahkan baris-baris itu. Posting ini sangat membantu:

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

Pada dasarnya ini adalah fakta bahwa Anda tidak memiliki izin yang ditetapkan untuk folder itu sendiri. Jadi, Anda perlu menjalankan:

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

menambahkan , nfs_export: falsepada akhir config.vm.synced_foldergaris di Vagrantfile, memecahkannya untukku.

Jika Anda sudah memiliki nfs-config yang berfungsi, dan tidak perlu Vagrant Anda untuk menimpanya setiap kali Anda mulai, maka Anda bisa menonaktifkan penulisan ke file ekspor.

Ini juga memecahkan masalah tabrakan, jika Anda memiliki lebih dari satu Vagrant yang mencoba mengakses folder yang sama, seperti misalnya memiliki 2 Vagrants yang hampir identik, satu menjalankan php 5.6 dan satu menjalankan php 7.2.

Puggan Se
sumber
0

TL&DR: Tambahkan override.vm.synced_folder berikut ".", "/ Vagrant", dinonaktifkan: true

Rasional: Secara default Vagrant mencoba mendeteksi folder NFS / SMB. Meskipun saya bisa mengerti mengapa pengembang menambahkan fitur ini, untuk kasus penggunaan saya ini sangat mengganggu. Solusinya adalah cukup Nonaktifkan sinkronisasi folder NFS.

Ini dapat dilakukan dengan mengganti opsi folder VM yang disinkronkan. Saya telah melampirkan konfigurasi laut digital berikut ini untuk pertimbangan Anda, sehingga Anda dapat melihat seluruh konfigurasi.

 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
sumber
Harus mencintai orang-orang "TL&DR"! Bersulang.
Luis Milanese
1
Terima kasih! Jangan lupa untuk
memperbaiki
Karena "TL&DR" Anda, Anda layak mendapatkan semua upvotes yang bisa didapat, tetapi kebenaran adalah jawaban Anda tidak membantu saya. Bukan karena itu tidak baik, tetapi masalah yang saya alami sedikit berbeda dari apa yang ditanyakan pada awalnya. Tetap saja, terima kasih atas sikap Anda yang baik. :)
Luis Milanese