web-dev-qa-db-ja.com

Vagrant UpとうっとうしいNFSパスワードの質問

私が行った言語の間違いでごめんなさい。 NFSによって共有フォルダーをマウントするときに、迷惑メールがパスワードを要求するのを防ぎます。

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

Githubや他の著者の投稿など、多くのオンラインリソースを利用しましたが、私には何の役にも立ちません...

指示が見つかった こちら を試しました。 cliの作業に関する深い知識はありません。だから誰かが私の問題の正しい解決策を与えることができますか?

17

Vagrantの公式ドキュメントは、これをカバーしています: https://www.vagrantup.com/docs/synced-folders/nfs.html#root-privilege-requirement

エントリを/etc/sudoersファイルに追加する必要があります。編集する方法は、ターミナルでSudo visudoと入力することです。

パスワードを入力すると、ファイルを編集しています。これらの行を以下に貼り付けます(OS XまたはLinuxでVagrantを実行しているかどうかによって異なります)。

開いているvimに慣れていない場合は、 このページは役に立ちました 。基本的に、以下の適切なテキストブロックをコピーします。次に、visudoで、テキストをファイルに貼り付ける場所に移動し(ファイルの最後は問題ありません)、「i」を押して挿入モードに入ります。 CMD + Vでテキストを貼り付けます。次に、ESCキーを押し、:wと入力して変更を保存し、:qと入力して終了します。

バージョン1.7.3以降、OS Xのsudoersファイルには次のエントリが必要です。

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の1つのバージョンから別のバージョンに変更されるため、上記は古い可能性があることに注意してください。重要なことは、ドキュメントがそれをカバーしていることです。

31
Taytay

OSXでこれを行う人にとって(私はMacOS Sierraバージョン10.12.6を使用しています)、これらの行を追加した後でも、許可に苦労しました。この投稿は本当に役に立ちました:

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

基本的には、そのフォルダに自分で設定したアクセス許可がないという事実です。だからあなたは実行する必要があります:

Sudo chmod +a "$USER allow write,append" /etc/hosts
2
Ruben Arevalo

正確なコマンドはVagrantバージョン間で変更される可能性があるため、常に機能するコマンドをリストすることはできません。

とにかく、 this Gist のsudoersルールはまだかなり近いはずです。 Vagrantバージョンの実際のコマンドが明らかになった場合は/var/log/auth.logを確認し、それに応じてルールを調整します。

2
tmatilai

vagrantfileの, nfs_export: false行の最後にconfig.vm.synced_folderを追加すると、解決しました。

すでに有効なnfs-configがあり、起動するたびにVagrantで上書きする必要がない場合は、エクスポートファイルへの書き込みを無効にすることができます。

同じフォルダーにアクセスしようとするVagrantが複数いる場合、たとえば、2つのほぼ同一のVagrants、1つはphp 5.6を実行し、もう1つはphp 7.2を実行するなど、衝突の問題も解決します。

1
Puggan Se

TL&DR:次を追加しますoverride.vm.synced_folder "。"、 "/ vagrant"、disabled:true

Rational:デフォルトでは、VagrantはNFS/SMBフォルダーを検出しようとします。開発者がこの機能を追加した理由は理解できますが、私のユースケースではこれは非常に面倒です。解決策は、NFSフォルダーの同期を単に無効にすることです。

これは、VM synced folderオプションをオーバーライドすることで実行できます。検討のために、Digital Oceanの次の構成を添付しましたので、構成全体を確認できます。

 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
0
FlyingV