Этот способ рекомендуется в руководстве по быстрому старту Chef:
knife ssh name:mynode -a ipaddress -x ubuntu -i mycredentials.pem "sudo chef-client"
Это действительно неуклюже. Неужели нет лучшего способа или идея в том, что в реальной производственной среде вы все равно будете автоматически обновлять узлы?
Ответы:
Это было бы в значительной степени то, с чего вы начали, но это нужно сделать только один раз. Первоначальный запуск chef-client обычно включает и запускает демон chef-client в качестве службы init.d.
Если вы действительно хотите сделать это более элегантно, вы можете отказаться от ssh и запустить ssh напрямую:
это, вероятно, будет быстрее, так как knife-ssh выполняет поиск на сервере Chef для извлечения узлов, соответствующих поисковому запросу (в данном случае
name:dynode
), что вам не нужно делать строго, если вы уже знаете IP-адрес.источник
ec2 server create
Нож плагина просто запускает Bootstrap следует SSH + шеф-клиент. Так что, если вам от этого станет легче, авторы шеф-повара не нашли ничего более умного.Вы можете использовать нож ssh для запуска chef-client на всех коробках, которые содержат определенную роль или рецепт:
Или если вы в EC2:
источник
Вы можете использовать ansible для развертывания и запуска chef-client.
$ ansible -i hosts all -a 'chef-client'
ansible легко устанавливается с помощью pip:
pip install ansible
Ваш файл инвентаря (в примере с именем «hosts») может выглядеть так:
[all] host1.example.com ansible_user=root host2.example.com ansible_user=root host3.example.com ansibel_user=root
(обратите внимание, что «all» - это имя группы в файле конфигурации для нашего примера - это произвольно и может быть чем угодно. Ваш файл инвентаризации может также включать другие группировки, например [web_wervers], [database_servers], [chef_servers] , так далее.)
Итак, еще раз, собрав все вместе:
> ansible -i hosts all -a 'chef-client'
или, может быть:
> ansible -i hosts all -a 'systemctl status'
источник
Я использую Jenkins CI для управления трассами. Сервер Linux настроен как рабочая станция и на нем установлен Jenkins. Так что я могу загрузить узлы с измененным run_list. В любом случае процесс начальной загрузки запускает chef-client в конце.
Для выполнения adhoc задание Jenkins выполняет команды ножа, чтобы изменить run_list для узла и использовать плагин SSH для запуска chef-client на нужном узле.
источник
Жаль, что для отправки команды клиенту chef нам нужно использовать подчеркивание ssh.
Кажется, что хотя каждый клиент Chef настроил безопасное соединение с сервером Chef, но сервер Chef не предоставляет командный мультиплексор по этому безопасному соединению, почему?
источник
В
chef-run
рабочей станции Chef появилась новая команда :Он будет установлен,
chef-client
если его нет, и запустит указанный вами ресурс или кулинарную книгу.Учебное пособие: https://learn.chef.io/modules/try-chef-infra#/
источник