Как правильно сделать add-apt-repository через Chef?

47

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

Теги:
chef
apt-get

4 ответа

58
Лучший ответ

Если вы используете 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 / имя пользователя?
  • 0
    Я не знаю, как вы могли получить ключ, но я уверен, что сервер ключей такой же, как и выше: "keyserver.ubuntu.com"
Показать ещё 6 комментариев
16

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

ppa "user/repo"

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

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

  • 0
    Какими функциональными возможностями обладает метод ppa над LWRP apt_repository, упомянутым в ответе Лео Гамаса выше?
  • 0
    Мы также строили свой собственный дом. И недавно переместил все это, чтобы использовать поваренную книгу сообщества. Есть слишком много крайних случаев вокруг aptitude и эффективного поиска репозиториев. :) В этом случае вам просто нужно предоставить полный URL-адрес панели запуска для репо, а не только для user/repo и он будет работать с apt_repository .
5

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

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

depends 'apt', '>= 2.7.0'

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню