我有一个厨师食谱,需要调用两个食谱:一个作为root
,它将创建一个新用户并将其添加到/etc/sudoers
,另一个食谱应该使用新的创建用户。
我知道我可以使用bash
资源轻松地以某个用户身份执行命令,但在这种情况下,我需要在两种情况下调用include_recipe
(root用户和新用户)。
有什么想法吗?
答案 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