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