2016-08-08 2 views
1

У меня есть кулинарная книга повара, которая должна вызывать два рецепта: один из них - root, который создаст нового пользователя и добавит его в /etc/sudoers и еще один рецепт, который должен быть запущен используя вновь созданного пользователя.Шеф-повар: запустите два рецепта с разными пользователями в одной и той же поваренной книге

Я понимаю, что я могу легко выполнять команды как определенный пользователь, используя ресурс bash, но в этом случае мне нужно вызвать include_recipe в обоих случаях (корень и новый пользователь).

Любые идеи?

ответ

4

Chef-клиент работает как пользователь root, и вы не можете просто запустить рецепт в качестве другого пользователя.

Это вполне законно, чтобы создать пользователя, а затем сделать несколько вещей от имени этого пользователя, например:

user "foo" 

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

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

Однако, если у вас есть рецепт, который вы действительно хотите включить два раз, и это должно действительно делать то же самое, только для разных пользователей (например, в их домашнем каталоге), а затем забыть о том, что рецепты - это все. Используйте custom resource, у которого есть user.

Затем вы можете вызвать этот ресурс в два раза, один раз для каждого пользователя:

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

 Смежные вопросы

  • Нет связанных вопросов^_^