Как правильно сделать add-apt-repository через Chef? - PullRequest
49 голосов
/ 06 марта 2012

Я учу шеф-повара и собираюсь сделать прямо сейчас для 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: что-то / пользователь

Ответы [ 4 ]

65 голосов
/ 06 марта 2012

Если вы используете chef v12.9 и выше, используйте ресурс apt_repository для управления репозиториями apt.Если вы используете chef ниже 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
16 голосов
/ 22 марта 2012

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

ppa "user/repo"

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

В идеале эту функцию следует добавить в поваренную книгу opscode apt.

7 голосов
/ 15 июля 2016

Добавление другого ответа, так как я только что вернулся сюда.Если у вас есть только 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

С в документации

2 голосов
/ 26 июня 2015

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

depends 'apt', '>= 2.7.0'

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

...