私は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:something/userの形式のppaリンクしかありません
chef v12.9 以上を使用する場合、aptリポジトリの管理にapt_repositoryリソースを使用します。 v12.8よりも低いchefを使用する場合は、 Chef Software、Incが提供するAPT Cookbook を使用できます。このクックブックは同じものを提供します [〜#〜] 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
ppa
メソッドを提供するサードパーティのaptクックブックもあります。
ppa "user/repo"
https://github.com/sometimesfood/chef-apt-repo
理想的には、この機能をopscode aptクックブックに追加する必要があります。
ここに戻ってきたので、別の答えを追加します。キー署名ではなくキーのURLだけを持っている場合は、キー属性でURLを指定するだけです。
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
ドキュメント から
もう1つの注意点は、aptクックブックを追加したら、クックブックに依存関係ステートメントを追加する必要があるということです。 metadata.rbを更新します(クックブックディレクトリのベースにある必要があります)
depends 'apt', '>= 2.7.0'
これにより、ノードのランリストにaptクックブックがないため、ノードが更新できない障害モードが防止されます。