Berks-Api не будет работать на Ubuntu в Azure - получить разрешение запрещено @ rb_sysopen - /etc/chef/client.pem
В рамках инфраструктуры нашего шеф-повара я пытаюсь настроить и настроить сервер berks-api. Я создал сервер Ubuntu в Azure и загрузил его, и он выглядит как узел на моем chef-сервере.
Я следовал инструкциям на github - установка bekshelf-api, чтобы установить berks-api через кулинарную книгу. Я бегал
sudo chef-client
на моем узле, и поваренная книга, кажется, была успешно запущена.
Проблема в том, что Berks-API не работает. Моя терминология в Linux не очень хороша, так что извините, если я делаю ошибки в своих словах, но похоже, что служба berks-api не может работать. Если я перехожу в / etc / service / berks-api и запускаю эту команду
sudo berks-api
Я получаю эту ошибку
I, [2015-07-23T11:56:37.490075 #16643] INFO -- : Cache manager starting...
I, [2015-07-23T11:56:37.491006 #16643] INFO -- : Cache Builder starting...
E, [2015-07-23T11:56:37.493137 #16643] ERROR -- : Actor crashed!
Errno::EACCES: Permission denied @ rb_sysopen - /etc/chef/client.pem
/opt/berkshelf-api/v2.1.1/vendor/bundle/ruby/2.1.0/gems/ridley-4.1.2/lib/ridley/client.rb:144:in `read'
/opt/berkshelf-api/v2.1.1/vendor/bundle/ruby/2.1.0/gems/ridley-4.1.2/lib/ridley/client.rb:144:in `initialize'
Если бы кто-нибудь мог помочь мне понять, что происходит, я бы очень признателен. Если вам нужно больше объяснить настройку, дайте мне знать.
1 ответ
Оказывается, я неправильно понял конфигурацию berks-api. Мне нужно было получить новый закрытый ключ для моего клиента (berkshelf) из manage.chef.io для нашей организации. Затем мне нужно было загрузить новый ключ (berkshelf.pem) в / etc / berkshelf / api-server и перенастроить berks-api для использования нового ключа. поэтому мой конфиг для berks-api теперь выглядит следующим образом:
{
"home_path":"/etc/berkshelf/api-server",
"endpoints":[
{
"type":"chef_server",
"options":
{
"url":"https://api.opscode.com/organizations/my-organization",
"client_key":"/etc/berkshelf/api-server/berkshelf.pem",
"client_name":"berkshelf"
}
}
],
"build_interval":5.0
}
Я не мог загрузить berkshelf.pem непосредственно в целевое местоположение, мне пришлось загрузить его в мое домашнее местоположение, а затем скопировать изнутри linux.
Сделав это, сервис запускается и работает отлично.