Проблема. Следующая командная строка
knife bootstrap 127.0.0.1 -r 'recipe[chef-client]' -x user -p password --sudo
возвращается
Bootstrapping Chef on 127.0.0.1
WARNING: Failed to connect to 127.0.0.1 -- Errno::ECONNREFUSED: Connection refused - connect(2)
Ожидается что эта команда будет успешной и после нее
knife node list
вернется
[
"127.0.0.1"
]
SSH-сервер отлично работает на localhost и ssh user@127.0.0.1 -p password
работает как положено.
Похоже, проблема с вызовом в том, что вы указали пароль с -p
вариант, который knife bootstrap
используется для указания альтернативного порта ssh. Вы хотели использовать -P
(заглавная P), что является правильным вариантом для указания пароля к команде начальной загрузки.
И, как указал Джастин, bootstrap, вероятно, технически не нужен, если у вас уже установлен chef до такой степени, что вы можете запускать команды «нож». Вы должны иметь возможность запустить «шеф-клиент», чтобы зарегистрировать свой узел на сервере (возможно, потребуется ключ проверки с -K
вариант, если он еще не установлен / не доступен в / etc / chef). После регистрации на сервере вы можете выдать knife node run_list add
команды для добавления соответствующих ролей / рецептов в список выполнения, затем вызвать другой chef-client
чтобы он вступил в силу. Затем снова, bootstrap
делает все с помощью одной команды, так что это неплохой вариант.
И вы должны добавить IP и NODENAME (имя хоста) в / etc / hosts:
127.0.0.1 NODENAME
Затем разделите% knife bootstrap 127.0.0.1 -r 'recipe [chef-client]' -x user -p password --sudo на два шага:
Шаг 1:
% knife bootstrap IP_ADDRESS -x ubuntu -P PASSWORD --sudo
Шаг 2:
% knife ssh name:NODENAME -x ubuntu -P PASSWORD "sudo chef-client"
Если вы получаете отказ в соединении, значит, соединение SSH не может быть открыто, потому что:
Тем не менее, «нож начальной загрузки» предназначен для использования для настройки удаленных систем с Ruby / RubyGems, установки Chef и настройки его для подключения к настроенному серверу Chef (из вашей локальной конфигурации ножа). Дополнительную информацию о команде «Knife bootstrap» см.
Кроме того, именем узла будет обнаруженное полное доменное имя (обычно выводится hostname -f
), если не указано с -N NODE_NAME.