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

J’apprends le chef et je vais le faire maintenant 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 y a-t-il une meilleure façon (“chef-style”?) de le faire. Aussi, je craignais que parfois add-apt-repository attende la touche “Entrée” sur son exécution, donc cette approche pourrait ne pas fonctionner telle quelle. Quelle est la bonne façon de le faire?

Edit: Je n’ai que le lien ppa dans le format: ppa: quelque chose / utilisateur

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 un chef inférieur à v12.8, vous pouvez utiliser APT Cookbook fourni par Chef Software, Inc. Ce livre de recettes fournit le même LWRP. Voici l’exemple d’utilisation de la ressource:

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

Il existe également un livre de recettes apt tiers fournissant 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 opscode apt.

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

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

À partir de la documentation

Une note supplémentaire est que, une fois que vous avez ajouté le livre de recettes apt, vous devez append une déclaration de dépendance à votre livre de recettes. Mettez à 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 de défaillance où un nœud ne peut pas être mis à jour car il ne contient pas le livre de recettes apt dans sa liste d’exécution.