Vagrantのsynced_folderにはあまり期待してはいけない
そもそもなにがしたかったか
Vagrant + VirtualBoxで開発環境を作ろうとしていて、デフォルトのvagrantユーザで作業するのもアレなんでprovision(今回はansible_local)でユーザを作って、そのユーザのホームディレクトリをホストOSと共有したかった。
試したことと当たった問題
config.vm.synced_folder
のowner
,group
にユーザ名・グループ名を普通に指定。id: magai: no such user
- フォルダの同期→provisioningの順番なのか。
- provisioner側でmountする。
mounting failed with the error: Protocol error
とか言われる。- どうも、ホストOS側からVirtualBoxに指示(GUIなどから?)しないとホストOS側のパスが見えない? ちょっとここ原因が最後までわからなかった。
- 仕方ないので、synced_folderで、uid, gidで直接指定しつつ、provisioner側で、uid, gid指定でユーザ、グループを作成。
そして、解決しないままいろいろ試していて気付いたのだが、ホームディレクトリを共有するとなると、~/.ssh/
なども共有することになるが、ご存知の通りこの辺パーミッションが厳密でないと動作しない。
なのにsynced_folder
ではディレクトリ・ファイルのパーミッションを1つ設定するだけで、細かいことはできないし、そもそもホームディレクトリを共有しても問題ばかりで駄目かなと。
あきらめた。
おまけ: 関連して引っかかった細かい問題
今後確認すること
- ユーザが存在する場合のみ
synced_folder
を設定する、ということはできないか? - VirtualBoxの共有機能のパーミッション周りにはどれくらい制限があるか。