2012-03-06 7 views
47

uczę Chef i mam zamiar teraz zrobić dla Ubuntu:Jaki jest właściwy sposób na wykonanie add-apt-repository przez Chef?

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

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

ale może istnieje lepszy („szef kuchni w stylu”?) Sposób to zrobić. Poza tym obawiam się, że czasami program apt-repozytorium czeka na naciśnięcie klawisza "Enter" podczas jego wykonywania, więc to podejście może nie działać tak, jak jest. Jaka jest właściwa metoda robienia tego?

Edit: Mam tylko ppa ogniwo w formacie: ppa: coś/user

Odpowiedz

62

Jeśli używasz chef v12.9 i powyżej, należy użyć do zarządzania zasobami apt_repository apt repozytoriów. Jeśli używasz szefa kuchni niższego niż v12.8, możesz użyć APT Cookbook provided by Chef Software, Inc. Ta książka kucharska stanowi samo LWRP Poniżej znajduje się przykład wykorzystania zasobu:

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

Jak dowiedzieć się, jaki jest serwer klucza i klucz, gdybym masz tylko nazwę/nazwę PPA? – Artem

+0

Nie wiem, jak zdobyć klucz, ale serwer kluczy jest prawie taki sam jak wyżej: "keyserver.ubuntu.com" –

+0

PPA będzie zawierał informacje o serwerze kluczy i kluczu do użycia. – jtimberman

16

Istnieje również innych firm apt książka kucharska, która zapewnia ppa metody:

ppa "user/repo" 

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

idealnie ta funkcjonalność powinna zostać dodana do książki kucharskiej opscode apt.

+0

Jaką funkcjonalność ma metoda ppa nad apt_repository LWRP wymienionym w powyższej odpowiedzi Leo Gamas? – DonBecker

+0

Zbudowaliśmy również własną firmę. A ostatnio przeniosłem to wszystko, aby wykorzystać społeczność książki kucharskiej. Istnieje zbyt wiele przypadków skrajnych wokół umiejętności i skutecznego obchodzenia się z repozytoriami.:) W tym przypadku wystarczy podać pełny adres startowy URL do repozytorium, a nie tylko "user/repo", i będzie działać z 'apt_repository'. – Till

2

Jeszcze jedna uwaga jest taka, że ​​po dodaniu książki kucharskiej apt należy dodać do swojej książki kucharskiej oświadczenie o zależności. Aktualizacja metadata.rb (powinny być w podstawie swojej książki kucharskiej dir)

depends 'apt', '>= 2.7.0' 

Zapobiegnie to tryb awarii, gdy węzeł nie może zaktualizować, ponieważ nie mają apt książkę kucharską w to listy uruchamiania.

5

Dodałem kolejną odpowiedź, ponieważ właśnie znalazłem się tutaj. Jeśli tylko mają URL klucza, a nie podpis klucz wystarczy podać adres URL w kluczu atrybut:

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 

Od the documentation

Powiązane problemy