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.

Сделав это, сервис запускается и работает отлично.

Другие вопросы по тегам