2014-01-13 7 views
6

私は、すべてのテストが終了したらChefクッキングブックをアップロードして宣伝して、私たちの展開パイプラインの適切な部分にするために、CIマシン(Teamcityを実行)を取得しようとしています。Chefノードに料理本のアップロードを許可する

しかし、クライアントはCookbookをアップロードする権限がありませんが、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. バリデータを使用して、Cookbookをアップロードします。非先割れスプーンを行う
  3. sudo bundle exec knife upload cookbooks/teamcity)をアップロードしますが、403

で失敗し、私もちょうど(sudo bundle exec knife client list)クライアントをリストしようとしたが、それはResponse: missing create permissionで失敗します。

クライアントとバリキーが/etc/chefに位置しているが、私は(私は<repo-path>からアップロードしようとしている)<repo-path>/.chef/knife.rbにナイフの設定を持っています。

私は設定が必要な許可があると思いますが、古いものと新しいOpscode Managementの両方のインターフェースで覗いてみたら、手がかりはありません。

何がありますか?

注:私たちは、Opedodeエンタープライズシェフのバージョンを使用しています。

答えて

5

ユーザーがより適切です

と呼ばれる「 はシェフ・クライアント・プログラムを実行しているノードではありませんシェフのサーバーAPIのすべてのユーザー」あなたはクライアントに管理者に 権利を譲渡することの上記の問題を回避したい場合は、作成することができますに使用される新しいユーザービルドサーバーからアップロードを行っています。すべてのユーザーは、Adminsグループのメンバーでなくても の料理本をアップロードすることができます。

ので、物事を合計します

  1. は、CIのノードで利用可能なユーザーのキー(.pem)を作るOpscode管理
  2. に新しいユーザーを作成します。
  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)は、私がOSバージョンから知っているadminフラグはEnterpriseバージョンでは動作しないと言います。しかし、誰もがEnterprise Chef(管理者でなくても)にアップロードできることは興味深いことが分かりました。知っておいてよかったです:-) – StephenKing

+0

Hehe、はい、それは興味深い違いです。人々がエンタープライズ版について理解できるようにQを編集する。 –

2

バリデータクライアントを使用してCookbookをアップロードすることはできません。これは、新しい(管理者以外の)クライアントしか登録できない特別なクライアントです。

Cookbookをアップロードするには、CIで使用されるクライアントに管理者権限が必要です(エンタープライズシェフにあれば、料理ブックのアップロード権限が必要です)。

ノードで使用するクライアントを管理者にするか、別のクライアントを作成してknifeと一緒に使用するように設定することができます(/etc/chef/client.pem以外の場所)。

免責事項:私はエンタープライズシェフについてほとんど知識がありませんが、この方法で違いはないと思います。シェフのサポートによると、これを行うための好ましい方法は、新しいユーザーを作成して、CIノードからシェフサーバーと対話するためにそれを使用することです

+0

ありがとうございます;それに管理者特権を割り当てました。しかし、どのノードにもそれらを渡すのを避けるために、シェフのサポートは、「ナイフ」と一緒に使用する新しいユーザーを作成することが好ましいと述べました。 –

関連する問題