Centos
廚師刀上傳食譜:不允許的方法
我在 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:
“響應”為空。當我嘗試 a
knife 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": {} }