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

Chef: run two recipes with different users in same cookbook

我有一本 Chef 食谱需要调用两个食谱:一个是 root,它将创建一个新用户并将其添加到 /etc/sudoers,另一个食谱应该是 运行 使用新创建的用户。

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

有什么想法吗?

Chef-client 运行作为 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