2016-08-08 118 views
1

我有一个厨师食谱,需要调用两个食谱:一个为root,将创建一个新用户并将其添加到/etc/sudoers,另一个配方应该运行使用新创建的用户。厨师:在同一本食谱中运行两个不同用户的食谱

我知道我可以很容易地使用bash资源作为特定用户执行命令,但在这种情况下,我需要在两种情况下(root用户和新用户)调用include_recipe

任何想法?

回答

4

厨师客户端运行为root用户,您不能简单地运行一个配方作为另一个用户。

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

user "foo" 

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

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

但是,如果你有一个食谱,你真的想包括两个时间和那应该真的做同样的事情,只是为了不同的用户(例如在他们的主目录中),然后忘记食谱就是一切。使用具有user属性的custom resource

然后,你可以调用这个资源两次,一次为每个用户:

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