厨师:在同一本食谱中运行两个不同用户的食谱

时间:2016-08-08 19:44:21

标签: chef cookbook

我有一个厨师食谱,需要调用两个食谱:一个作为root,它将创建一个新用户并将其添加到/etc/sudoers,另一个食谱应该使用新的创建用户。

我知道我可以使用bash资源轻松地以某个用户身份执行命令,但在这种情况下,我需要在两种情况下调用include_recipe(root用户和新用户)。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

Chef-client以root用户身份运行,您不能简单地以其他用户身份运行配方。

创建一个用户然后以该用户的名义做几件事是完全合法的,例如:

user "foo"

directory "/usr/local/foo" do
  owner "foo"
end

execute "install foo" do
  command "whatever-foo"
  user "foo"
end

但是,如果你有一个配方,你真的想要包括两次,并且应该真的做同样的事情,只为不同的用户(例如在他们的主目录),然后忘记食谱<的想法/ em>就是一切。使用user属性的custom resource

然后,您可以为每个用户调用此资源两次:

%w{root otheruser}.each do |u|
  mycookbook_myresource "do-it-for-user-#{u}" do
    user u
  end
end