私はvagrantでchef-soloを使用しています
Chefは、デフォルトですべてをrootにします。私はいくつかのことにrootを使用したいが、他のすべてには機能的なユーザーを使用したい。
私は基本的にいくつかのパッケージを標準の場所にインストールしています(rootとして実行する必要があります)。そして、私はたくさんのものを非標準の場所にコンパイルしています。このツリー全体をroot以外のユーザー/グループが所有するようにします。デフォルトのユーザー/グループを属性に設定できますか?
もっと広く言えば、chefがrootとして機能したいのはなぜですか?また、デフォルトのユーザーをより一般的なリクエストではなく非rootに変更するのはなぜですか?
具体的には、bash
リソースはユーザーを取得できますが、これはユーザーの完全なログインではありません。したがって、ホームディレクトリはルートのホームディレクトリ(ユーザーは書き込みできません)のままであり、作成されたファイルのグループはルートのままです。それで、
bash "foo" do
user node[:globals][:username]
code <<-EOH
# do stuff
EOH
end
do stuff
ユーザーとしての完全ログインではありません。
この質問はhttps://serverfault.com/questions/402881/execute-as-vagrant-user-not-root-with-chef-soloに関連しており、そこに記載されているバグは修正されません:http:/ /tickets.opscode.com/browse/CHEF-1523実行するには、おそらく環境属性を詳しく調べる必要があると思います:http ://wiki.opscode.com/display/chef/Resources#Resources-Execute