Назад | Перейти на главную страницу

Предоставить серверу chef-solo как root?

я использую knife чтобы загрузить мою виртуальную машину с помощью ванильной установки Debian 7.0. На этапе начальной загрузки я просто устанавливаю sources.list, обновление и обновление системы, затем я устанавливаю buil-essential, rsync и ruby1.9.1 (с участием rubygems). В качестве последнего шага устанавливаю мой шаблон начальной загрузки. chef как драгоценный камень.

Взрыв! мой узел в этот момент загружен и готов к запуску рецептов. Но на этой машине все еще может работать только root chef-solo. И вот здесь я запутался:

Дело в том, что когда я бегу knife solocook some_user@some.node.tld я бы хотел готовить (предоставить) этот компьютер как пользователь без полномочий root (например, пользователь с именем chef). Вы знаете, некоторые из моих рецептов будут настроены sshd не принимать подключения к root (как одна из мер безопасности).

Но если какой-то другой рецепт настроит пользователя unix с именем chef и еще кое-что sudo для этого пользователя, то до этого момента я должен готовить как корень. А потом, если я хочу готовить как chef, Я должен бежать knife solo cook ... опять же, с отдельным списком рецептов.

И для меня это полный антипаттерн. Узел должен быть подготовлен за один шаг. Итак, мой вопрос: следует ли мне оставить идею инициализации в качестве другого пользователя с правами root и использовать root для запуска всех моих рецептов шеф-повара?

Chef предназначен для запуска с правами root. В общем случае невозможно предоставить ящик, кроме как в качестве корневого процесса. [1]

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

Вы сталкиваетесь с анти-шаблоном, потому что используете chef не так, как предполагалось. Даже будучи шеф-поваром, он предназначен для запуска с правами root через задание cron или демон через регулярные промежутки времени.

Ваш вариант использования может быть полностью допустимым, но вы можете использовать неправильный инструмент. Если вам нужно такое управление конфигурацией только с принудительной отправкой, Ansible может лучше подойти для того, что вы пытаетесь сделать. Если вы не представляете себе, что работа шеф-повара через регулярные промежутки времени является частью вашей обычной работы, то шеф-повар может быть не тем инструментом.

[1] - Если вы настроите все права доступа к файлам, которыми хочет управлять шеф-повар, вы можете запустить его как обычный пользователь, это сложно для более чем очень простых рецептов.

В своем проекте я выбираю этот шаблон (в 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

В моем случае я использую не «нож соло», а просто «повар-соло».