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
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
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.
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
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.