Windows環境のVagrantでsynced_folder時にpermission設定する話
ぬわー、synced_folderのファイル権限0777になるの何とかならんかーー ansibleのhostsがexecutableになるとめんどい!
— a3no (@a3noplus) 2014, 9月 27
と思って書いてからググッたらどうやら設定できるっぽい。現在リロード中。。。。
— a3no (@a3noplus) 2014, 9月 27
できた。。。先にggrks過ぎてすいませんとしか。
— a3no (@a3noplus) 2014, 9月 27
最近、Ansibleを使い始めていてその時に起きた問題。
自分は例のごとくWindows環境なのでChefとかのレシピはWindows上でEditorで書いて、
実行はVagrantで立てたVM内にsynced_folderでレシピのレポジトリを同期して
VMからVMに対してknife-soloとかしていました。
当然、Ansibleでも同様の方法でやろうとしたのですが、
特に設定しないとsynced_folderで同期したフォルダ内のファイル権限が0777になっていて、
Ansibleはhostsとして指定されたファイルに実行権限が付いていると怒られる。
ERROR: The file hosts is marked as executable, but failed to execute correctly. If this is not supposed to be an executable script, correct this with `chmod -x hosts`.
Dynamic Inventoryとして判定してるのにDynamic Inventoryとして有効じゃない!みたいなことらしい。
もちろん、Dynamic Inventoryの要件を満たしていれば問題ないのだけれど、ここで指定しているのは通常のhosts形式
これはAnsibleの問題というよりVagrantのsynced_folderの問題なので、
Tweetで憂さ晴らしせずにさっさとググッたらすぐ解決するという話。
以下のように指定する。
guest.vm.synced_folder "ansible-repo", "/vagrant", :mount_options => ["dmode=777","fmode=666"]
これでhostsファイルの権限が0666になったので問題なく実行できるようになった。
試してないけど他にowner/groupも指定できるようである。
そういやAnsible meetup tokyo参加報告書いてないなと思いつつ、そっとじ