Подтвердить что ты не робот

Каков правильный способ создания add-apt-repository через шеф-повара?

Я изучаю шеф-повара, и сейчас я собираюсь сделать это для Ubuntu:

execute "add-apt-repository ppa:#{node[:some_repo]}" do
  user "root"
end

execute "apt-get update" do
  user "root"
end

но может быть, есть лучший способ ( "стиль шеф-повара"?). Кроме того, я обеспокоен тем, что иногда add-apt-repository ждет ключа "Enter" при его выполнении, поэтому такой подход может работать не так, как есть. Каков правильный способ сделать это?

Изменить: У меня есть только ppa-ссылка в формате: ppa: something/user

4b9b3361

Ответ 1

Если вы используете chef v12.9 и выше, используйте ресурс apt_repository для управления репозиториями apt. Если вы используете шеф-повара ниже, чем v12.8, вы можете использовать APT Cookbook от Chef Software, Inc. Эта кулинарная книга обеспечивает тот же LWRP Ниже приведен пример использования ресурса:

apt_repository "nginx-php" do
  uri "http://ppa.launchpad.net/nginx/php5/ubuntu"
  distribution node['lsb']['codename']
  components ["main"]
  keyserver "keyserver.ubuntu.com"
  key "C300EE8C"
end

Ответ 2

Существует также сторонняя кулинарная книга сторонних разработчиков, которая предоставляет метод ppa:

ppa "user/repo"

https://github.com/sometimesfood/chef-apt-repo

В идеале эта функциональность должна быть добавлена ​​к куковой книге opscode apt.

Ответ 3

Добавление другого ответа, так как я только что оказался здесь. Если у вас есть только URL-адрес ключа, а не ключевая подпись, вы можете просто указать URL-адрес в ключевом атрибуте:

apt_repository 'some_repo' do
  uri          'http://some_url/ubuntu/precise/amd64/'
  arch         'amd64'
  distribution 'precise'
  components   ['contrib']
  key          'https://some_key_url.com/debian/release.key'
end

Из документация

Ответ 4

Еще одно замечание: если вы добавили кучную книгу apt, вы должны добавить выражение о зависимости в свою кулинарную книгу. Обновление metadata.rb(должно быть в базе вашего каталога cookbook)

depends 'apt', '>= 2.7.0'

Это предотвратит отказ в случае, когда node не может обновиться, поскольку в нем нет куковой книги apt.