I'm trying to get our CI machine (running Teamcity) to upload and promote Chef cookbooks once it's finished all of the tests, to make it a proper part of our deployment pipeline.
However, the client is not authorized to upload cookbooks, but I can't figure out how to tweak the ACL settings to make it work.
$ 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
I've tried (but failed with the same error):
- Giving the
ciclient read permissions in the Opscode admin. - Using the validator user to upload the cookbooks.
- Doing a non-Spork upload (
sudo bundle exec knife upload cookbooks/teamcity), but failing with a 403
I've also tried just listing the clients (sudo bundle exec knife client list), but that fails with Response: missing create permission.
The client and validator keys are located in /etc/chef, but I have a Knife config in <repo-path>/.chef/knife.rb (I'm trying to upload from <repo-path>).
I'm guessing there's some kind of permission that I need to set, but after having poked around in both the old and new Opscode Management interface, I'm out of clues.
What gives?
NOTE: We're using the hosted-by-Opscode Enterprise Chef version.