2014-01-13 153 views
6

我試圖讓我們的CI機器(運行Teamcity)在完成所有測試後上傳並推廣廚師食譜,以使其成爲我們部署管道的適當部分。允許廚師節點上傳食譜

但是,客戶端無權上傳食譜,但我無法弄清楚如何調整ACL設置以使其工作。

$ sudo bundle exec knife spork upload teamcity --environment production 
ERROR: You authenticated successfully to https://api.opscode.com/organizations/<my-org> as ci but you are not authorized for this action 
Response: missing create permission 

我試過(但具有相同的錯誤失敗):

  1. 給予在Opscode公司管理的ci客戶端讀取權限。
  2. 使用驗證程序用戶上傳食譜。
  3. 做一個非叉勺上傳(sudo bundle exec knife upload cookbooks/teamcity),但有403

我也試過剛剛上市的客戶端(sudo bundle exec knife client list)失敗,但失敗Response: missing create permission

客戶端和驗證程序密鑰位於/etc/chef,但我在<repo-path>/.chef/knife.rb(我試圖從<repo-path>上載)中配置一個Knife配置。

我猜想我需要設置某種權限,但是在新舊Opscode管理界面中都出現了一些問題,但是我沒有線索。

什麼給?

注意:我們使用的是Opscode企業版主機版。

回答

5

根據廚師的支持,這樣做的最佳方法是創建一個新的用戶並用它來從CI節點廚師Server進行交互:

用戶更有正常稱爲「廚師服務器API的任何用戶, 不是運行主廚客戶端程序的節點」

如果您想避免必須將權限分配給客戶端的上述問題,您可以創建一個將用於的新用戶從構建服務器上傳。所有用戶都可以上傳 烹飪書,而無需成爲管理員組的成員。

因此,總結的東西了:

  1. 在Opscode公司聯繫
  2. 創建一個新的用戶使用戶的密鑰(.pem)可用的​​CI節點上。
  3. 確保來自(1)的用戶用於所有刀具命令(參見--user--key刀具選項),例如knife upload cookbook <name> --user ci_user --key .chef/ci_user.pem
+0

啊,這非常有趣,似乎與OpenSource版本有所不同。作爲用戶,上傳食譜失敗,「你不能採取這一行動。」。 – StephenKing

+0

[docs](http://docs.opscode.com/knife_user.html#options)表示,我從操作系統版本獲知的管理標誌甚至不適用於企業版。但是我發現每個人都可以使用Enterprise Chef上傳(即使不是管理員),我感到很有趣。很高興知道,對你有好處:-) – StephenKing

+0

呵呵,是的,這是一個有趣的差異。編輯我的Q以確保人們瞭解它是關於企業版的。 –

2

您不能使用驗證程序客戶端上傳食譜。這是一個只能註冊新(非管理)客戶端的特殊客戶端。

爲了上傳食譜,CI使用的客戶端必須具有管理員權限(或者需要cookbook上傳權限,如果在企業主廚中有這樣的權限)。

您可以使由節點管理員使用的客戶端,或者只是創建另一個客戶端,並與knife配置此使用(不要將其指向/etc/chef/client.pem,而是到別的地方)。

聲明:我對企業廚師只有一點認識,但我想這種方式並沒有什麼不同。

+0

謝謝;分配它管理權限工作。然而,爲了避免將這些分發給任何節點,Chef支持人員表示,最好創建一個新的用戶來使用'knife'。 –