0

私は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

4

1 に答える 1

1

ほとんどのシェフのリソースは、デフォルトを変更するためにユーザー (または所有者) とグループの属性を取ります。ディレクトリを作成し、所有者、グループ、モードを任意に設定し、root 以外のユーザーとして実行 (コンパイル?) できます。

これらの属性に使用しているリソースを確認してください。ユーザー名を属性または環境に保存し、それらの値をレシピ リソース ブロックでユーザーとして使用して、コマンドを実行したり、リソースを作成したりすることができます。

デフォルトのリソースの参考資料: https://docs.chef.io/resource_directory.html

すなわち

directory '/tmp/what?' do
  owner node[:username]
  group node[:group]
  mode 00755
end

また

execute 'gcc somefile.cc' do
  user node[:user]
  group node[:group]
end

わからない具体的な行動があれば指摘してください。

于 2012-12-28T23:34:59.007 に答える