web-dev-qa-db-fra.com

Quelle est la bonne façon de faire add-apt-repository via Chef?

J'apprends le chef et je vais le faire pour Ubuntu:

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

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

mais peut-être existe-t-il une meilleure façon ("à la façon d'un chef"?) de le faire. En outre, je craignais que parfois add-apt-repository attend la touche "Entrée" lors de son exécution, cette approche pourrait donc ne pas fonctionner telle quelle. Quelle est la bonne façon de procéder?

Edit: Je n'ai que le lien ppa au format: ppa: quelque chose/utilisateur

49
Artem

Si vous utilisez chef v12.9 et supérieur, utilisez la ressource apt_repository pour gérer les référentiels apt. Si vous utilisez chef inférieur à v12.8, vous pouvez utiliser APT Cookbook fourni par Chef Software, Inc . Ce livre de cuisine fournit les mêmes LWRP Voici l'exemple d'utilisation de la ressource:

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
66
Leo Gamas

Il existe également un livre de recettes apt tiers qui fournit une méthode ppa:

ppa "user/repo"

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

Idéalement, cette fonctionnalité devrait être ajoutée au livre de recettes apt opscode.

16
Eric Drechsel

Ajout d'une autre réponse depuis que je viens de me retrouver ici. Si vous n'avez que l'URL d'une clé et non la signature de la clé, vous pouvez simplement spécifier l'URL dans l'attribut clé:

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

De la documentation

7
jorfus

Une note supplémentaire est qu'une fois que vous avez ajouté le livre de recettes apt, vous devez ajouter une déclaration de dépendance à votre livre de recettes. Mettre à jour metadata.rb (devrait être dans la base de votre répertoire de livre de recettes)

depends 'apt', '>= 2.7.0'

Cela empêchera le mode d'échec où un nœud ne peut pas se mettre à jour car il n'a pas le livre de recettes apt dans sa liste d'exécution.

2
jorfus