Centos

廚師刀上傳食譜:不允許的方法

  • March 3, 2014

我在 CentOS 6 機器上執行 Chef server 11。通過 Opscode 的 RPM 安裝。我在 Windows 7 機器上設置了我的工作站。我可以正常執行knife client list並得到響應,因此我確信我的伺服器工作正常。

我在工作站上創建了一個本地 Git 儲存庫,添加了入門說明書,並將其送出到本地儲存庫(在工作站的本地磁碟上)。

但是,當我嘗試上傳食譜時:

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

“響應”為空。當我嘗試 aknife cookbook list時,我得到一個空集。我想那是因為它是從伺服器中獲取它的,而伺服器還沒有食譜。

我在舊的 Opscode wiki 上看到了這篇文章,這讓我相信我正在嘗試編輯_default環境。所以創建了一個開發環境,確認它存在,並且:

knife cookbook upload getting-started -E Dev

結果相同。我最後的手段是指定一個管理員帳戶:

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

結果相同。

為了成功上傳這本食譜,我需要做什麼?

我在預設安裝中遇到了同樣的問題。原來,knife.rb 在伺服器 url 中也需要 https:// 而不是 http://。

當我嘗試從本地 json 文件上傳廚師角色但本地 json 中缺少屬性時,我也收到此錯誤。當我使用額外的詳細模式時,我看到刀正在嘗試 HTTP PUT 操作並收到HTTP 405 Method Not Allowed響應。

所以看起來“Method Not Allowed”錯誤基本上意味著knife送出了一個Chef伺服器不理解的HTTP請求。

為了解決我的角色問題,一旦我使用了正確的角色格式(如下所示),它就可以正常工作。

{
   "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": {}
}

引用自:https://serverfault.com/questions/476426