2014-01-13 4 views
6

Ich versuche, unsere CI-Maschine (mit Teamcity) dazu zu bringen, Chefkochbücher hochzuladen und zu promoten, sobald alle Tests abgeschlossen sind, um sie zu einem geeigneten Teil unserer Bereitstellungspipeline zu machen.Einem Chefkoch erlauben, Kochbücher hochzuladen

Der Client ist jedoch nicht berechtigt, Kochbücher hochzuladen, aber ich kann nicht herausfinden, wie man die ACL-Einstellungen optimiert, damit es funktioniert.

$ 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 

Ich habe versucht (aber mit dem gleichen Fehler nicht):

  1. Geben Sie die ci Client Leseberechtigungen in dem Opscode Admin.
  2. Mit dem Validator Benutzer die Kochbücher hochladen.
  3. Doing ein nicht-Spork (sudo bundle exec knife upload cookbooks/teamcity) hochladen, aber andernfalls mit einer 403

habe ich versucht, auch nur die Kunden Listing (sudo bundle exec knife client list), aber das scheitert mit Response: missing create permission.

Die Client und Validator-Tasten befinden sich in /etc/chef, aber ich habe eine Messer-Konfiguration in <repo-path>/.chef/knife.rb (Ich versuche, von <repo-path> hochladen).

Ich vermute, es gibt eine Art von Erlaubnis, die ich einstellen muss, aber nachdem ich sowohl in der alten als auch in der neuen Opscode Management-Schnittstelle gestöbert habe, bin ich aus den Fugen geraten.

Was gibt?

HINWEIS: Wir verwenden die Hosted-by-Opscode Enterprise Chef-Version.

Antwort

5

Laut der Chef-Unterstützung, ist der bevorzugte Weg, dies zu tun, einen neuen Benutzer und es verwendet, zu schaffen, mit dem Chef Server aus dem CI-Knoten zu interagieren:

Ein Mitglied ist mehr richtig als „Jeder Benutzer des Chef-Server-API, die keinen Knoten läuft das Koch-Client-Programm“

Wenn Sie das oben genannte Problem von vermeiden, mögen Admin Rechte an einem Client zuordnen, können Sie eine erstellen Neuer Benutzer, der fürverwendet wirdmacht Uploads vom Build-Server.Alle Benutzer dürfen Kochbücher hochladen, ohne Mitglied der Admins-Gruppe sein zu müssen.

Also, um die Dinge zusammenzufassen:

  1. Erstellen Sie einen neuen Benutzer im Opscode Admin
  2. der Schlüssel des Benutzers Stellen (.pem) auf dem CI-Knoten.
  3. Sicherstellen, dass der Benutzer von (1) in allen Messerbefehlen verwendet wird (siehe --user und --key Messeroptionen), z. knife upload cookbook <name> --user ci_user --key .chef/ci_user.pem
+0

Ah, das ist super interessant und scheint ein Unterschied zur OpenSource-Version zu sein. Als Benutzer schlägt das Hochladen von Kochbüchern mit "Sie dürfen diese Aktion nicht durchführen" fehl. – StephenKing

+0

Die [docs] (http://docs.opscode.com/knife_user.html#options) sagen, dass das Admin-Flag, das ich von der OS-Version kenne, nicht einmal mit der Enterprise-Version funktioniert. Aber ich finde es interessant zu sehen, dass jeder mit Enterprise Chef hochladen kann (auch ohne Admin). Gut zu wissen, gut für dich :-) – StephenKing

+0

Hehe, ja, das ist ein interessanter Unterschied. Bearbeiten Sie mein Q, um sicherzustellen, dass es sich um die Enterprise-Version handelt. –

2

Sie können den Validator Client nicht zum Hochladen von Kochbüchern verwenden. Dies ist ein spezieller Client, der nur neue (Nicht-Admin-) Clients registrieren kann.

Um Kochbücher hochladen zu können, muss der von Ihrem CI verwendete Client über Administratorrechte verfügen (oder wenn Sie in Enterprise Chef solche Kochbuchuploadberechtigungen haben).

Sie können entweder den vom Knoten verwendeten Client als admin definieren oder einfach einen anderen Client erstellen und diesen für die Verwendung mit knife konfigurieren (nicht auf /etc/chef/client.pem, sondern auf eine andere Stelle).

Haftungsausschluss: Ich habe nur wenig Wissen über Enterprise Chef, aber ich denke, es unterscheidet sich nicht auf diese Weise.

+0

Danke; es zugewiesen Admin-Rechte funktionierte. Um jedoch zu vermeiden, diese an irgendwelche Knoten weiterzugeben, sagte der Chef-Support, dass es bevorzugt wäre, einen neuen Benutzer zu erstellen, der mit "Messer" verwendet werden kann. –

Verwandte Themen