В моем проекте я выбираю этот шаблон (в AWS это будет делать 'ec2-user')
загрузите отдельного системного пользователя с повышенными разрешениями с помощью sudo с nopasswd
, и следующая команда работает нормально.
ssh wheel_user@some_host sudo /usr/local/bin/chef-solo -c /chef_dir/.chef/solo.rb -j /chef_dir/.chef/chef.json
В моем случае я использую не «соло с ножом», а просто «повар-соло».
Chef предназначен для запуска от имени пользователя root. В общем случае нет другого способа подготовить ящик, кроме как корневой процесс. [1]
Это означает, что вам нужно либо запустить его как root, либо запустить его в процессе с повышенными привилегиями как root через sudo или другими способами .
Вы столкнулись с анти-шаблоном, потому что используете chef не так, как предполагалось. Даже будучи шеф-поваром, он предназначен для запуска с правами root через задание cron или демон через регулярные промежутки времени.
Ваш вариант использования может быть полностью допустимым, но вы можете использовать не тот инструмент. Если вам нужно такое управление конфигурацией только с принудительной отправкой, Ansible может лучше подойти для того, что вы пытаетесь сделать. Если вы не представляете себе, что работа шеф-повара через регулярные промежутки времени является частью вашей обычной работы, то шеф-повар может оказаться неподходящим инструментом.