Шеф-повар динамического инвентаря, как Ansible?
В Ansible я могу использовать сценарий оболочки для предоставления списка хостов, которые нужно настроить, в Chef я знал, что Chef Server предоставляет аналогичные функции.
Тем не менее, я не хочу устанавливать тяжелый сервер, чтобы обеспечить только эту функцию, есть ли обходной путь, чтобы я мог сделать то же самое в Chef, как Ansible?
1 ответ
Ключевая вещь, которую сервер chef предоставляет поверх chef solo, - это возможность поиска, которая может находить серверы / узлы на основе заданного запроса.
Я понимаю, что не хочу размещать собственный шеф-сервер для получения этой функциональности! Есть много движущихся частей, чтобы обеспечить это, Erlang и Rabbitmq и...
К счастью, ноль chef, или режим --local клиента шеф-клиента, как его теперь называют, поддерживает поиск и действует как собственный мини-сервер, только временный.
Он может читать файлы json-узла / среды / роли в правильной структуре каталогов и действовать как конечная точка API, пока не завершится выполнение chef.
Учитывая эту структуру, помимо использования поиска по рецептам для поиска других узлов, можно использовать knife search --local 'role:web-server AND chef_environment:production'
перечислить совпадающие узлы, а также knife ssh --local 'role:web-server AND chef_environment: production' 'ssh_command'
выполнять команды на всех серверах.
Так что, хотя это не совсем динамичная система инвентаризации, вы можете с ней многое сделать.