Команда ножа не проходит аутентификацию

Я создал настройку, как показано ниже, и для всего этого я использую Amazon EC2:

Сервер Ubuntu 12.04, на котором у меня установлен сервер Chef и настроен нож. Это работает отлично, я могу запускать команды ножа, и это дает мне ожидаемые результаты.

Еще один похожий сервер ubuntu, который я пытаюсь использовать в качестве клиента шеф-повара. Установил повар и настроил клиент. Так же установлен нож на клиенте. Я знаю, что это установлено правильно, потому что после установки я выполнил команду

knife --version 

я получил вывод

Chef: 10.16.2

Теперь я настроил файл knife.rb. Содержимое выглядит следующим образом: log_level :info log_location STDOUT node_name 'knife' cache_type 'BasicFile' cache_options( :path => "~/.chef/checksums" ) client_key '~/.chef/clientkey.pem'

cookbook_path       [ "~/mychefrepo/cookbooks" ]
cookbook_copyright "example org"
cookbook_email     "[email protected]"
cookbook_license   "apachev2"

chef_server_url    "http://ip-11-213-23-99:4000"

validation_key      "~/.chef/validation.pem"

После настройки Если я запускаю команду ножа

knife client list

Я получаю следующую ошибку:

ОШИБКА: не удалось пройти аутентификацию на http://ip-11-213-23-99:4000 как client1 с ключом /etc/chef/clientkeys.pem

Прошу развеять мои следующие сомнения:

  1. Обязательно ли хранить clientkey.pem на сервере шеф-повара? Если да, то в каком месте?
  2. Есть ли какое-то конкретное место, где мне нужно сохранить файл pem на клиенте шеф-повара?
  3. Что я делаю неправильно?

person dharam    schedule 03.12.2012    source источник
comment
Можете ли вы предоставить свое решение, указанное ниже? Я испытываю эту проблему прямо сейчас.   -  person Erich    schedule 11.09.2014


Ответы (2)


Ваш клиент правильно существует на шеф-сервере? Я полагаю, что он будет называться «нож», так как это ваше имя_узла.

http://ip-11-213-23-99:4040/clients

Клиентский pem-ключ регистрируется на сервере, как вы можете видеть через server-webui, перейдя на вкладку клиентов на сервере. Ключ хранится в CouchDB. Это значение появляется здесь, когда вы выполняете запуск chef-client с сервером.

Значение предоставленного ключа pem должно совпадать с сохраненным pem, показанным в клиентском представлении для предоставленного вами 'node_name'. Так ли это?

Сам клиентский ключ может храниться где угодно.

person PatrickWalker    schedule 03.12.2012
comment
Ну, я не уверен, как правильно проверить, существует ли клиент на шеф-сервере или нет. Я бы проверил, если бы вы сказали мне, как это сделать. Более того, я создал клиент на сервере шеф-повара с помощью интерфейса командной строки ножа на сервере шеф-повара, поэтому я считаю, что это будет правильно. Во всяком случае, я бы проверил ключ в базе данных дивана. - person dharam; 04.12.2012
comment
Если вы перейдете по ссылке выше, заменив свой фактический IP-адрес, вы должны увидеть список всех настроенных клиентов API. Вы должны найти его с тем же именем, что и «node_name» в вашем knife.rb, и проверить значение его ключа, щелкнув по нему. Сравните это с ключом pem, который вы отправляете с помощью knife.rb. надеюсь, это поможет - person PatrickWalker; 04.12.2012
comment
Спасибо .. Я смог решить проблему другим способом .. :) Но ваш ответ заставил меня задуматься .. Спасибо за вашу помощь :) - person dharam; 04.12.2012
comment
Поделитесь, каким другим способом вы это решили? Это поможет другим читателям. - person Emil; 14.12.2012
comment
Я сталкиваюсь с этой проблемой. Пожалуйста, поделитесь своим ответом с сообществом. Нехорошо высасывать ответы, но не способствовать. - person GregB; 12.11.2013

Когда вы загружаете клиент с сервера, он создает там client.pem. или даже когда вы запускаете chef-client на самом клиенте, он создает client.pem. Этот файл нужно скопировать на сервер node. Опять же, вы должны указать путь к knife.rb, который доступен в /chef-repo/.chef.

  1. Да, копировать необязательно.
  2. В любом месте на узле сервера, но главное, что вы должны указать это местоположение в knife.rb
person Jyoti Amage    schedule 22.11.2013