Chef Knife Загрузить поваренную книгу: метод не разрешен

Я использую Chef server 11 на коробке CentOS 6. Устанавливается через RPM от Opscode. Я установил свою рабочую станцию ​​на Windows 7. Я могу бегать как обычно knife client list и получить ответ, так что я уверен, что мой сервер работает правильно.

Я создал локальное репозиторий Git на рабочей станции, добавил готовую поваренную книгу и зафиксировал ее в локальном репо (на локальном диске на рабочей станции).

Когда я пытаюсь загрузить кулинарную книгу, хотя:

knife cookbook upload getting-started
Uploading getting-started [0.4.0]
ERROR: Method Not Allowed
Response:

"Ответ" пуст. Когда я пытаюсь knife cookbook listВернусь пустой набор. Я предполагаю, что это потому, что он получает его с сервера, на котором еще нет кулинарной книги.

Я видел этот пост на старой вики Opscode, и это заставило меня поверить, что я пытаюсь отредактировать _default среда. Итак, создали среду разработки, подтвердили ее существование и:

knife cookbook upload getting-started -E Dev

Тот же результат. Моим последним средством было указать учетную запись администратора:

knife cookbook upload getting-started -E Dev -u admin

Тот же результат.

Что мне нужно сделать, чтобы успешно загрузить эту кулинарную книгу?

3 ответа

Решение

У меня была такая же проблема из установки по умолчанию. Оказывается, что для knife.rb нужен https:// вместо http:// в URL-адресе сервера.

Я также получил эту ошибку, когда попытался загрузить роль шеф-повара из локального файла json, но в моем локальном json отсутствовали свойства. Когда я использовал дополнительный режим многословия, я увидел, что нож пытается выполнить операцию HTTP PUT, и получил HTTP 405 Method Not Allowed ответ.

Таким образом, похоже, что ошибка "Метод не разрешен" в основном означает, что нож отправил HTTP-запрос, который сервер Chef не понял.

Чтобы исправить мою проблему с ролью, как только я использовал правильный формат роли (показанный ниже), он работал нормально.

{
    "name": "my role name",
    "description": "my role description",
    "chef_type": "role",
    "json_class": "Chef::Role",
    "run_list": [ 
              "recipe[recipe1]", 
              "recipe[recipe2]"
           ],
    "default_attributes": {},
    "override_attributes": {}
}

Ошибка "Метод не разрешен" на самом деле является ошибкой HTTP 405. Я этого не знал. Оказывается, у меня было какое-то странное перенаправление на моем сервере Chef. Я бы обратился к серверу по его полному доменному имени, но меня перенаправили на имя хоста. Я включил "лишнее" многословие:

knife cookbook upload getting-started -V -V

И сообщения отладки дают мне знать, что при первоначальной загрузке получен HTTP 301 (постоянно перемещенный). Когда нож пытался поразить новый адрес, он использовал GET вместо POST, в результате чего 405. Я настроил нож, чтобы он указывал на перенаправленный URL, и загрузка прошла успешно.

Другие вопросы по тегам