7

ホストと VM の間で Vagrant NFS の「同期フォルダー」を実装するための最良の方法は何ですか?

最終的に NFS を一般的に動作させることができましたが、VM 内でいくつかの調整が必要でした。他の人が使用できるようにこれらの変更を自動化する方法がわかりません。

具体的には、/etc/passwd および /etc/group の UID/GID を、エクスポートされたファイルシステムのユーザー/グループのものと一致するように変更する必要があります。(例: ホスト マシンは 502:20 を使用し、VM apache ユーザーも 502:20 を使用するように設定する必要があります)

この変更がないと、Web アプリの実行を妨げるあらゆる種類のアクセス許可/所有権の問題が発生します。UID/GID の一致により、すべてがうまく機能します。

Vagrant Web サイトを含め、見つけたすべてのドキュメントを読みました。

補足として、ネイティブフォルダー同期(非常に遅い)とrsync(100%CPU ...使用不可)も試しました

NFS がパフォーマンスの勝者のように見えますが、私のセットアップは大雑把です。

違いがある場合は、次のことを行っています。

  • ホスト: OS X 10.9.2
  • 放浪者: 1.5.4
  • プロバイダー: VMware フュージョン
  • ボックス: シェフ/centos-6.5
  • 開発アプリ: Magento 1.8
4

2 に答える 2

12

Vagrantfile では、現在の uid/gid を nfs マッピングに割り当てることができます。(プロビジョニング後にホスト /etc/exports を参照してください。)

 config.nfs.map_uid = Process.uid   
 config.nfs.map_gid = Process.gid 

Puppet をプロビジョナーとして使用すると、次の値を因数分解できます。

 config.vm.provision :puppet, :facter => { 
     "host_uid" => config.nfs.map_uid, 
     "host_gid" => config.nfs.map_gid, 
 } do |puppet| ...

したがって、変数のように人形スコープで使用できます。

user { "www-data":
    ensure => present,
    uid => $::host_uid,
    gid => $::host_gid,
}

シェフでは、カスタム json オプションは、後でシェフのレシピで使用するのと同等だと思います

Vagrant.configure("2") do |config|
  config.vm.provision "chef_solo" do |chef|
        # ...

        chef.json = {
          "map" => {
            "uid" => config.nfs.map_uid,
            "gid" => config.nfs.map_gid
          }
        }
      end
    end
于 2014-05-27T10:44:26.113 に答える
5

bindfs

GitLab はbindfs、開発方法として Vagrant を非推奨にする前に使用していました。

そのための Vagrant プラグインもあります: https://github.com/gael-ian/vagrant-bindfs

ファイルがまだプロジェクトの一部だったときの関連する Vagrantfile 行:

config.vm.synced_folder ".", "/vagrant", :disabled => true
config.vm.synced_folder "./home_git", "/git-nfs", :nfs => true
config.bindfs.bind_folder "/git-nfs", "/home/git", :owner => "1111", :group => "1111", :'create-as-user' => true, :perms => "u=rwx:g=rwx:o=rwx", :'create-with-perms' => "u=rwx:g=rwx:o=rwx", :'chown-ignore' => true, :'chgrp-ignore' => true, :'chmod-ignore' => true
于 2014-05-24T07:04:58.093 に答える