2012-03-06 25 views
47

tôi đang học Chef và tôi sẽ làm ngay bây giờ cho Ubuntu:Cách thích hợp để thực hiện add-apt-repository thông qua Chef là gì?

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

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

nhưng có thể có một tốt hơn ("đầu bếp mang phong cách"?) Cách để làm điều đó. Ngoài ra, tôi lo ngại rằng đôi khi add-apt-repository chờ phím "Enter" trên thực thi, vì vậy phương pháp này có thể không hoạt động như vậy. Cách làm đúng là gì?

Edit: tôi chỉ có liên kết ppa ở định dạng: ppa: một cái gì đó/user

Trả lời

62

Nếu bạn sử dụng chef v12.9 trở lên, Sử dụng các tài nguyên apt_repository để quản lý kho apt. Nếu bạn sử dụng đầu bếp nhỏ hơn v12.8, bạn có thể sử dụng APT Cookbook provided by Chef Software, Inc. sách dạy nấu ăn này cung cấp cùng LWRP Sau đây là cách sử dụng ví dụ về tài nguyên:

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

Làm thế nào để tìm hiểu là những gì máy chủ quan trọng và then chốt nếu tôi chỉ có tên/tên người dùng PPA? – Artem

+0

Tôi không biết làm thế nào bạn có thể nhận được chìa khóa, nhưng keyserver tôi gần như chắc chắn là như trên: "keyserver.ubuntu.com" –

+0

PPA sẽ có thông tin về keyserver và chìa khóa để sử dụng. – jtimberman

16

Ngoài ra còn có một bên thứ ba sách dạy nấu ăn apt mà cung cấp một phương pháp ppa:

ppa "user/repo" 

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

Lý tưởng nhất chức năng này nên được thêm vào sách dạy nấu ăn apt opscode.

+0

Chức năng nào của phương pháp ppa có trên apt_repository LWRP được đề cập trong câu trả lời của Leo Gamas ở trên? – DonBecker

+0

Chúng tôi cũng từng xây dựng một nhà riêng. Và gần đây đã chuyển tất cả để sử dụng sách dạy nấu ăn cộng đồng. Chỉ có quá nhiều trường hợp cạnh xung quanh aptitude và khám phá kho một cách hiệu quả để chăm sóc.:) Trong trường hợp này, bạn chỉ cần cung cấp URL khởi chạy hoàn chỉnh cho repo và không chỉ 'người dùng/repo' và nó sẽ làm việc với' apt_repository'. – Till

2

Một lưu ý bổ sung là khi bạn đã thêm sách dạy nấu ăn thích hợp, bạn nên thêm câu lệnh phụ thuộc vào sách dạy nấu ăn của mình. Cập nhật metadata.rb (phải ở trong cơ sở của dir sách dạy nấu ăn của bạn)

depends 'apt', '>= 2.7.0' 

này sẽ ngăn chặn các chế độ thất bại nơi một nút không thể cập nhật bởi vì nó không có sách dạy nấu ăn apt trong đó là Danh sách chạy.

5

Thêm câu trả lời khác vì tôi vừa tìm thấy chính mình ở đây. Nếu bạn chỉ có URL cho một khóa và không phải là chữ ký chính bạn chỉ có thể chỉ định URL trong các thuộc tính quan trọng:

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 

Từ the documentation

Các vấn đề liên quan