49

私はChefを学んでおり、Ubuntuで今すぐやろうとしています:

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

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

しかし、それを行うためのより良い(「シェフスタイル」?)方法があるかもしれません。また、add-apt-repository が実行時に「Enter」キーを待機する場合があるため、このアプローチがそのまま機能しない可能性があることを懸念しました。それを行う正しい方法は何ですか?

編集:私はフォーマットのppaリンクしか持っていません:ppa:something/user

4

4 に答える 4

67

Chef v12.9 以降を使用する場合は、apt リポジトリの管理に apt_repository リソースを使用します。v12.8未満のchefを使用している場合は、Chef Software, Inc.が提供するAPTクックブックを使用できます。このクックブックは同じLWRPを提供します 。リソースの使用例は次のとおりです。

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
于 2012-03-06T13:38:04.733 に答える
16

ppaメソッドを提供するサードパーティのaptクックブックもあります。

ppa "user/repo"

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

理想的には、この機能をopscodeaptクックブックに追加する必要があります。

于 2012-03-21T23:23:38.987 に答える
2

追加の注意事項として、apt クックブックを追加したら、クックブックに依存ステートメントを追加する必要があります。metadata.rb を更新します (クックブック ディレクトリのベースにある必要があります)。

depends 'apt', '>= 2.7.0'

これにより、ランリストに apt クックブックがないためにノードが更新できないという障害モードが回避されます。

于 2015-06-26T00:30:49.073 に答える