ChefでUbuntuのPPAリポジトリを追加するレシピの書き方3つ
Ubuntuの開発に利用されているサイトLaunchpadにはPPAというパッケージリポジトリがあります。PPAでは、Ubuntuに含まれているバージョンよりも新しいパッケージが配布されていて便利です。
例えば、ppa:nginx/stableを入れるとします。
普通は以下のようにadd-apt-repository
コマンドを使って入れます。
$ add-apt-repository ppa:nginx/stable $ apt-get install nginx
レシピにしてみましょう。
方法1
これをそのままChefレシピにすると以下のようになります。
dist = node['lsb']['codename'] execute "add ppa:nginx/stable" do command "add-apt-repository ppa:nginx/stable" creates "/etc/apt/sources.list.d/nginx-stable-#{dist}.list" end execute "apt-get update" package "nginx" do action :install end
方法2
executeリソース使うのなんかいまいちですね。
Opscode公式のopscode-cookbooks/aptクックブックを使いましょう。
以下のようにレシピを書けます。apt_repositoryは勝手にapt-get update
してくれます。
指定しているURLはppa:nginx/stableのページの Technical details about this PPA あたりに載っています。
dist = node['lsb']['codename'] apt_repository "nginx-stable-#{dist}" do uri "http://ppa.launchpad.net/nginx/stable/ubuntu" distribution dist components ["main"] action :add end package "nginx" do action :install end
方法3
さらにsometimesfood/chef-apt-repoクックブックを使うと、以下のように書けます。
ppa "nginx/stable" package "nginx" do action :install end
お好きなのをどうぞ〜。