Chefでyumのリポジトリを追加してみる

とりあえずインストールしたCentOSにChefでインストールしてみる
の続き

Chefでyumリポジトリを追加してみる。
今回は、サードパーティのクックブックを使わずに追加してみる。

リポジトリを追加してみる

リポジトリを追加するクックブックを作成し、

$ cd chef-repoのディレクトリ
$ knife cookbook create yum_repo -o site-cookbooks

レシピを書く。
どのリポジトリもenabled=0にしている。

$ vi site-cookbooks/yum_repo/recipes/default.rb
bash 'add_epel' do
  user 'root'
  code <<-EOC
    rpm -ivh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
    sed -i -e "s/enabled *= *1/enabled=0/g" /etc/yum.repos.d/epel.repo
  EOC
  creates "/etc/yum.repos.d/epel.repo"
end

bash 'add_rpmforge' do
  user 'root'
  code <<-EOC
    rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
    sed -i -e "s/enabled *= *1/enabled=0/g" /etc/yum.repos.d/rpmforge.repo
  EOC
  creates "/etc/yum.repos.d/rpmforge.repo"
end

bash 'add_remi' do
  user 'root'
  code <<-EOC
    rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
    sed -i -e "s/enabled *= *1/enabled=0/g" /etc/yum.repos.d/remi.repo
  EOC
  creates "/etc/yum.repos.d/remi.repo"
end

CentOSに適用する。

$ vi nodes/192.168.56.101.json
{
  "run_list": [
    "recipe[yum_repo]"
  ]
}
$ knife solo cook ユーザー名@192.168.56.101

yumリポジトリが追加されているのが確認できる。

$ ssh ユーザー名@192.168.56.101
centos$ yum repolist --enablerepo=epel,rpmforge,remi
・・・
epel                                       Extra Packages for Enterprise Linux 6 - x86_64                                      10,694
remi                                       Les RPM de remi pour Enterprise Linux 6 - x86_64                                     1,484
rpmforge                                   RHEL 6 - RPMforge.net - dag                                                          4,678
・・・

リポジトリを使ってみる

epelを使ってSLコマンドをインストールしてみる。

SLコマンドをインストールするクックブックを作成し、

$ knife cookbook create sl -o site-cookbooks

レシピを書く。

$ vi site-cookbooks/sl/recipes/default.rb
package "sl" do
  action :install
  options "--enablerepo=epel"
end

CentOSに適用する。

$ vi nodes/192.168.56.101.json
{
  "run_list": [
    "recipe[yum_repo]",
    "recipe[sl]"
  ]
}
$ knife solo cook ユーザー名@192.168.56.101

実行すると、SLが走っていく。

$ ssh ユーザー名@192.168.56.101
centos$ sl